2016-11-08 5 views
0

Situation:ein Unix-Skript erstellen zu sortieren und zu verarbeiten Dateien

ich einen Ordner auf meinem Desktop namens unsorted_files haben, die etwa 1 GB enthält Dateitypen unterschiedlicher (jpg, gif, docx, png, wav, mid, csv) usw.

Zusätzlich habe ich 3 weitere Verzeichnisse auf dem Desktop, die nur ihren dedizierten Dateityp (jpg, gif, docx) enthalten.

Die tatsächlichen Verzeichnisnamen für diese gewidmet Verzeichnisse sind:

jpgdirectory 
gifdirectory 
docxdirectory 

Problem:

Ich möchte ein Bash-Skript erstellen, die ich durch Terminal auf Mac OS laufen kann 10.10.5, die trennen und verarbeiten Sie diese Dateitypen aus dem unsorted_files-Ordner und platzieren Sie sie in ihren neu erstellten Verzeichnissen abhängig vom Dateityp.

dh. Alle jpg-Dateien im Ordner unsorted_files werden bei Ausführung des Skripts an das jpg-Verzeichnis gesendet und alle gif-Dateien werden an das GIF-Verzeichnis

gesendet. Der einzige Nachteil ist, dass alle Dateitypen mit (jpgverzeichnis, gifdirectory, docxdirectory) auskommen müssen an verschiedene gesendet werden

Wie könnte ich dieses Ziel aus einer Bash-Skript-Perspektive erreichen, oder vielleicht kann dies mit nur Terminal-Befehle getan werden.

+0

'mv unsortierte_Dateien/*. Jpg jpgVerzeichnis /'? Nachdem Sie alle kategorisierten Dateien verschoben haben, bleiben die "Verschiedenen" -Dateien übrig. –

Antwort

2

Um einen mkdir- und mv-Befehl in bash zu automatisieren, können Sie diesen in eine for-Schleife wie die folgende setzen.

Code:

#!/bin/bash 

unsorted_path="/path/to/unsorted/dir" 
output_path="/path/to/output/dirs" 
for type in $(cat filetypes.txt) 
do 
    mkdir -p ${output_path}/${type}directory 
    mv ${unsorted_path}/*.${type} ${output_path}/${type}directory/ 
done 

Die 'filetypes.txt' Datei ist eine Liste von Dateitypen, eine pro Zeile wie:

jpg 
gif 
docx 
png 
wav 
mid 
csv 

Sie könnten auch nur die Dateitypen codieren

dh
#!/bin/bash 

unsorted_path="/path/to/unsorted/dir" 
output_path="/path/to/output/dirs" 
for type in jpg gif docx png wav mid csv 
do 
    mkdir -p ${output_path}/${type}directory 
    mv ${unsorted_path}/*.${type} ${output_path}/${type}directory/ 
done 

Hoffe, das hilft!

+0

danke, ich werde es versuchen. –

+0

marcus die filetypes.txt-Datei, ist das eine separate txt-Datei, die neben dem Skript erstellt werden muss oder kann das im Skript verschachtelt werden? –

+0

Yes.filetypes.txt' ist eine separate Datei. Das zweite Codebeispiel erlaubt es, die Dateitypen in ein Skript zu codieren (d. H. Für jpg gif docx png wav mid csv ...) –

Verwandte Themen