我有一个包含 pdf 文件子文件夹的大文件夹。我想获取所有 pdf 文件(其中 290 个)并将它们放入一个目录中。(我认为这很简单。)这样我就可以使用我的 pdf 程序 pdfshuffle 或类似的东西将它们连接到一个文档中。我将文件路径和名称放入一个文件:out.txt
,使用: find $(pwd) -iname '*.PDF' > out.txt
out.txt 包含如下路径和文件:
...
/home/user/Downloads/pedals/PEDALS/Electro-Harmonix/Small Stone Phaser.PDF
/home/user/Downloads/pedals/PEDALS/Electro-Harmonix/Dr. Quack (Doctor Q Melhorado).pdf
/home/user/Downloads/pedals/PEDALS/Marshall/Guv'Nor 1.PDF
/home/user/Downloads/pedals/PEDALS/Marshall/Guv'Nor 2.pdf
...
凉爽的。所以我想我可以这样做:
#!/bin/bash
input="out.txt"
while IFS= read -r line
do
#echo "$line"
cp $line .
done < "$input"
但它只复制了大约 36 个 pdf,并且 shell 说它不能统计文件:
...
cp: cannot stat 'Boogie/Vtwin.pdf': No such file or directory
cp: cannot stat '/home/user/Downloads/pedals/PEDALS/Mesa': No such file or directory
...
该文件显然在那里,我可以查看它等等。我的方法或脚本有什么问题?
使用
find
和可以轻松处理包含空格或其他有趣字符的文件名xargs
。阅读man find xargs
并做类似的事情验证命令,当它们符合预期时……
删除“
echo
”以实际执行命令。