Answers:
如果您使用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文件上成功完成了上述单行脚本。
-print0
在您的查找内容和-0
xargs中添加args 来进行某种程度的中介。
对于Windows命令行(cmd.exe),可以使用:
for /F "usebackq delims==" %j IN (`dir /s /b *.pdf`) do copy "%j" c:\target_dir
a/x.pdf
,您要如何处理b/x.pdf
?