Existe-t-il une commande de terminal pour diviser un dossier en deux?

8

J'ai un dossier avec 80 000 fichiers sur mon iMac G5 exécutant Ubuntu 12.04.1 et je ne peux même pas l'ouvrir avec Nautilus car il se fige.

Je peux le faire ls -adans Terminal et ça me montre tout.

Existe-t-il une commande de terminal que je pourrais utiliser pour la diviser en deux répertoires de taille égale (en termes de nombre de fichiers) afin qu'il soit plus facile pour Nautilus d'ouvrir l'un d'entre eux? Ou peut-être 4 dossiers?

Zanna
la source
2
Pour ouvrir les fichiers, 80000 divisé en 4 dossiers serait toujours sur un accident nautilus powerpc Imac G5 ... vous pouvez essayer mkdir folder1puis cp *.txt folder1de copier tous txtà folder1et faire des extensions comme cp *.jpg folder2 cp *.doc folder3 cp *.docx folder3. Nautilus devrait alors avoir un travail plus facile à voir.
blade19899
J'ai oublié de mentionner que tous les fichiers sont au format .jpg.
sélectionnez un dossier avec shotwell et laissez shotwell créer des dates de dossier et autres
blade19899

Réponses:

10

ls -1 | sort -n | head -40000 | xargs -i mv "{}" /destination/folder/

Ajustez head -40000pour répondre à vos besoins, aussi/destination/folder/

Frantique
la source
1

Essayez ce script ci-dessous, je l'ai trouvé sur Linuxquestions.org

PhotosPath="/media/4GBSD/DCIM/101CANON"
SortPath="/home/angus/.imagesort"
LibraryPath="/home/angus/Photos"
CameraPath="/media/4GBSD"

veuillez renommer ces chemins en fonction de vos besoins

#!/bin/bash
#
#
PhotosPath="/media/4GBSD/DCIM/101CANON"
SortPath="/home/angus/.imagesort"
LibraryPath="/home/angus/Photos"
CameraPath="/media/4GBSD"
CharFromName=4
echo 
echo 
############
# Test to see if $PhotosPath exists, if not promp for new path / exit.
test -d $PhotosPath || read -p "$PhotosPath does not exist, close to exit or type new path:" PhotosPath
test -d $PhotosPath || "read -p '$PhotosPath is invalid. Press enter to close' && exit"

############
# move files from camera to $SortPath
mv $PhotosPath/* $SortPath/

############
# rename all image files in $SortPath
# FolderDateDD-HHMMSS.ext
jhead  -autorot -ft -nf%y%m%d-%H%M%S $SortPath/*

###########
# Sort files into folders using $CharFromName letters of the file name
#
ls $SortPath | while read file; do
 # extract first $CharFromName characters from filename
 FolderDate=${file:0:$CharFromName}
 # create directory if it does not exist
 test -d $LibraryPath/$FolderDate || mkdir $LibraryPath/$FolderDate
 # move the current file to the destination dir
 mv -v $SortPath/$file $LibraryPath/$FolderDate/$file
done

##########
# move sorted files into photo library
#mv -v $SortPath/* $LibraryPath/ 

##########
# Umount the card
umount $CameraPath

##########
# End notification
echo 
echo "Photos  from: $PhotosPath"
echo "End location: $LibraryPath"
echo 
echo "The card has been ejected."
echo 
read -p "Press enter to close this window…"
blade19899
la source
1
Beaucoup trop compliqué mais merci pour les tracas. La solution des autres gars est beaucoup plus facile. Les gens doivent continuer leur vie, vous savez, et ne pas la gaspiller devant un terminal. La technologie est censée vous aider, pas manger tout votre temps ...
@Sergiu ni pour détruire votre PC non plus! L'autre solution est beaucoup trop simple et je n'hésiterais pas à la qualifier de dangereuse. Une boucle for or while ferait parfaitement l'affaire ici.
hytromo