Gibt es einen Terminalbefehl, um einen Ordner in zwei Teile zu teilen?

8

Ich habe einen Ordner mit 80.000 Dateien auf meinem iMac G5 unter Ubuntu 12.04.1 und kann ihn nicht einmal mit Nautilus öffnen, da er einfriert.

Ich kann ls -aim Terminal tun und es zeigt mir alles.

Gibt es einen Terminalbefehl, mit dem ich ihn in zwei gleich große Verzeichnisse (in Bezug auf die Anzahl der Dateien) aufteilen kann, damit Nautilus eines davon leichter öffnen kann? Oder vielleicht 4 Ordner?

Zanna
quelle
2
Zum Öffnen 80.000 Dateien, aufgeteilt in 4 Ordnern würden noch Absturz nautilus auf einem PowerPC G5 Imac! ... Sie könnten versuchen , mkdir folder1und dann cp *.txt folder1alle kopieren txtzu folder1und tut so für Erweiterungen wie cp *.jpg folder2 cp *.doc folder3 cp *.docx folder3. Nautilus sollte es dann einfacher haben, sie anzuzeigen.
Blade19899
Ich habe vergessen zu erwähnen, dass alle Dateien im JPG-Format vorliegen.
Wählen Sie einen Ordner mit Shotwell aus und lassen Sie Shotwell Ordnerdaten und dergleichen erstellen
Blade19899

Antworten:

10

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

Passen Sie an head -40000Ihre Bedürfnisse anzupassen, auch/destination/folder/

Frantique
quelle
1

Versuchen Sie dieses Skript unten Ich fand es auf Linuxquestions.org

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

Bitte benennen Sie diesen Pfad entsprechend Ihren Anforderungen um

#!/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…"
Klinge19899
quelle
1
Viel zu kompliziert, aber danke für den Ärger. Die Lösung der anderen Jungs ist viel einfacher. Die Menschen müssen mit ihrem Leben weitermachen, das Sie kennen, und dürfen es nicht vor einem Terminal verschwenden. Technologie soll Ihnen helfen, nicht Ihre ganze Zeit
@Sergiu auch nicht, um deinen PC zu zerstören! Die andere Lösung ist viel zu einfach und ich würde nicht zögern, sie als gefährlich zu bezeichnen. Eine for- oder while-Schleife würde hier perfekt funktionieren.
Hytromo