我有一个包含大量 PDF 文件的目录,其中一些位于子目录中(可以延伸多层)。我想将所有匹配的文件移动*.pdf
到名为 的输出文件夹中papers
。
我怎样才能做到这一点?
答案1
如果您使用bash
较新版本,您可以从以下globstar
选项中获益:
shopt -s globstar
mv **/*.pdf papers/
答案2
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
答案3
find -print0 /directory/with/pdfs -iname "*.pdf" | xargs -0 mv -t /papers
(与另一个答案类似,但我更喜欢 pipe/xargs/mv...对我来说更直观)
仅供参考,我在多个目录和多个 pdf 文件上成功执行了上述单行脚本。
答案4
如果您只搜索一个目录深度,您可以执行以下操作:
mkdir <destination>
mv */*.pdf <destination>
其中<destination>
代表某个目录。mv
不会自动为您创建目录。