Wie kann ich alle PDF-Dateien in einem Verzeichnis (und seinen Unterverzeichnissen) rekursiv in ein einziges Ausgabeverzeichnis kopieren?

Wie kann ich alle PDF-Dateien in einem Verzeichnis (und seinen Unterverzeichnissen) rekursiv in ein einziges Ausgabeverzeichnis kopieren?

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 *.pdfin einen einzigen Ausgabeordner mit dem Namen verschieben papers.

Wie kann ich das machen?

Antwort1

Wenn Sie basheine aktuelle Version verwenden, profitieren Sie von der globstarMö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. mverstellt nicht automatisch ein Verzeichnis für Sie.

verwandte Informationen