Ich habe ein Verzeichnis mit einer großen Anzahl von PDF-Dateien, von denen sich einige in Unterverzeichnissen befinden (die mehrere Ebenen tief sein können). Ich möchte alle passenden Dateien *.pdf
in einen einzigen Ausgabeordner mit dem Namen verschieben papers
.
Wie kann ich das machen?
Antwort1
Wenn Sie bash
eine aktuelle Version verwenden, profitieren Sie von der globstar
Möglichkeit:
shopt -s globstar
mv **/*.pdf papers/
Antwort2
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
Hier ist ein Test, den ich gemacht habe
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
Beachten Sie die Datei „aaa bbb.pdf“.
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
Antwort3
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(ähnlich einer anderen Antwort, aber ich bevorzuge Pipe/Xargs/MV ... für mich intuitiver)
Zu Ihrer Information: Ich habe das obige einzeilige Skript erfolgreich in mehreren Verzeichnissen und mehreren PDF-Dateien ausgeführt.
Antwort4
Wenn Sie nur ein Verzeichnis tief durchsuchen, können Sie Folgendes tun:
mkdir <destination>
mv */*.pdf <destination>
wobei <destination>
für ein beliebiges Verzeichnis steht. mv
erstellt nicht automatisch ein Verzeichnis für Sie.