2016-04-28 6 views
1

Ich bin wirklich neu zu bash und ich versuche ein Skript zu schreiben, um alle Bilder in einem Verzeichnis zu durchlaufen und sie einzeln in ein anderes Verzeichnis zu kopieren. Ich bin nicht wirklich mit der Syntax vertraut, daher kann ich nicht wirklich herausfinden, was ich falsch mache.Kopieren von Bildern in ein anderes Verzeichnis mithilfe von Befehlszeilenargumenten bash

func() 
{ 
FILES=$1 
FILES+=/*.jpg 
for f in $FILES 
do 
    echo "$f" 
    cp "$f" $2 

done; 
} 
func $1 $2 

Wenn ich Argumente geben wie script ./images ./test Echos es jedes Bild als

/images/image1.jpg 
/images/image2.jpg 

und so weiter, aber es ist nicht wirklich Kopieren auf das Testverzeichnis. Irgendwelche Ideen, was das Problem sein könnte?

+0

warum nicht 'cp * .jpg/pfad/zu/destination_dir /'? (Sofern Ihre Dateinamen keine Leerzeichen enthalten). 'cp' ist so konzipiert, dass es funktioniert. Sie können Ihre Online-Dokumentation von cmd-line lesen, indem Sie 'man cp' eingeben. Viel Glück. – shellter

+0

Eigentlich habe ich Ihren Code ausprobiert und es hat so funktioniert, wie Sie es erwartet haben. Es kopierte 2 JPG-Dateien in den Testordner. Könnte es sein, dass Sie Ihren Code nicht ausführen, wo sich 'test' Ordner befindet – Esref

+0

Vielen Dank für die Bestätigung für mich. Ich habe es auf einem Server ausgeführt und die Verzeichnisse waren nicht richtig erfrischend, denke ich, aber es funktionierte tatsächlich, danke! – Taylor

Antwort

2

Ich versuche, ein Skript zu Schleife durch alle Bilder in einem Verzeichnis und kopieren Sie sie einzeln in ein anderes Verzeichnis

Sie verwenden wie dieses

find path_to_your_directory -type f -name *.jpg -exec cp {} where_to_copy \; 
den find Befehl kann zu schreiben

Wie @shelter erwähnt, könnten Sie cp *.jpg /path/to/destination_dir/ verwenden, aber in diesem Fall müssen Sie etwas zusätzlichen Code schreiben, um den Fall der Dateien mit Leerzeichen zu nehmen sagen file with spaces.jpg.

Aber find kümmert sich automatisch darum.

+0

Danke dafür. Finden funktioniert viel besser und ich werde versuchen, die Schleife zu ersetzen. – Taylor

Verwandte Themen