回答:
bash最近のバージョンで使用する場合、globstarオプションから利益を得ることができます:
shopt -s globstar
mv **/*.pdf papers/
find /bunchopdfs -name "*.pdf" -exec mv {} /papers \;
これが私がしたテストです
$ ls -R
.:
a aaa bbb.pdf pdfs
./a:
foo.pdf
./pdfs:
ファイル「aaa bbb.pdf」に注意してください。
$ find . -name "*pdf" -exec mv {} pdfs \;
$ ls -R
.:
a pdfs
./a:
./pdfs:
aaa bbb.pdf foo.pdf
"{}"スペースを含むファイル名を処理するために引用する必要はありませんか?
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(別の答えに似ていますが、私はpipe / xargs / mvを好む...私にとってより直感的です)
参考までに、複数のディレクトリと複数のpdfファイルで上記の1行のスクリプトを正常に実行しました。
-print0と-0xargsにargs を追加することで、これを多少仲介できます。
a/x.pdfとが存在するケースをどのように処理しますb/x.pdfか?