Yanıtlar:
Eğer kullanırsanız bash
son sürümünde, sen yararlanabilirsiniz globstar
seç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.
-print0
ve -0
xargs'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. mv
sizin için otomatik olarak bir dizin oluşturmaz.
a/x.pdf
veb/x.pdf
nasıl davayı ele almak istersiniz ?