Jawaban:
Jika Anda menggunakan bashdalam versi terbaru, Anda bisa mendapat untung dari globstaropsi:
shopt -s globstar
mv **/*.pdf papers/
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
Inilah tes yang saya lakukan
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
Perhatikan file "aaa bbb.pdf".
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
"{}"untuk berurusan dengan nama file yang mengandung spasi?
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(mirip dengan jawaban lain tetapi saya lebih suka pipa / xargs / mv ... lebih intuitif untuk saya)
FYI, saya berhasil membuat skrip satu-baris di atas dengan sukses pada banyak direktori dan beberapa file pdf.
-print0ke temuan Anda, dan -0ke xargs.
Untuk baris perintah Windows (cmd.exe), Anda dapat menggunakan:
for /F "usebackq delims==" %j IN (`dir /s /b *.pdf`) do copy "%j" c:\target_dir
Jika Anda hanya mencari satu direktori dalam, Anda bisa melakukan:
mkdir <destination>
mv */*.pdf <destination>
di mana <destination>singkatan dari beberapa direktori. mvtidak akan secara otomatis membuat direktori untuk Anda.
a/x.pdfdanb/x.pdf?