如何将目录(及其子目录)中的所有 pdf 文件递归复制到单个输出目录中?

如何将目录(及其子目录)中的所有 pdf 文件递归复制到单个输出目录中?

我有一个包含大量 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不会自动为您创建目录。

相关内容