Yanıtlar:
Eğer kullanırsanız bashson sürümünde, sen yararlanabilirsiniz globstarseçeneği:
shopt -s globstar
mv **/*.pdf papers/
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
İşte yaptığım bir test
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
"Aaa bbb.pdf" dosyasına dikkat edin.
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
"{}"Boşluk içeren dosya adlarıyla başa çıkmak için alıntı yapmanız gerekmez mi?
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(başka bir cevaba benzer ancak boru / xargs / mv ... benim için daha sezgisel tercih ederim)
FYI, yukarıdaki tek satırlık betiği birden çok dizin ve birden fazla pdf dosyasında başarıyla yaptım.
-print0ve -0xargs'a argümanlar ekleyerek buna biraz aracılık edebilirsiniz .
Windows komut satırı (cmd.exe) için şunları kullanabilirsiniz:
for /F "usebackq delims==" %j IN (`dir /s /b *.pdf`) do copy "%j" c:\target_dir
Yalnızca bir dizinin derinliklerini arıyorsanız, şunları yapabilirsiniz:
mkdir <destination>
mv */*.pdf <destination>
burada <destination>bazı dizin anlamına gelir. mvsizin için otomatik olarak bir dizin oluşturmaz.
a/x.pdfveb/x.pdfnasıl davayı ele almak istersiniz ?