在终端中查找和复制文件

在终端中查找和复制文件

我有一个 .txt 文件(名为 list.txt),其中包含文件名列表,包括其路径。例如:

/Users/Me/Downloads/0001.pdf
/Users/Me/Downloads/0010.pdf
/Users/Me/Downloads/0053.pdf
等等

我想将这些复制到桌面上名为“new-folder”的文件夹中。我在终端中使用以下脚本来执行此操作:

cp `cat /Users/Me/Desktop/list.txt` /Users/Me/Desktop/new-folder/

这真是太棒了!
但现在我想扩展这个功能。
首先,如果路径包含空格,它就不起作用,这不太实用。
其次,我并不总是确定路径。我希望终端在某个文件夹及其子文件夹中搜索名为“0001.pdf”的文件。

我对终端的了解仅限于这个脚本,仅供大家参考。
我希望有人能帮助我,在此先行致谢!

答案1

您可以使用xargs引用每一行。

xargs -a list.txt -I% cp "%" destination/

你的第二个要求不是很实际,但假设列表只是一个文件名列表,那么像这样的事情就可以起作用:

xargs -a list.txt -L1 -I% find -name "%" -exec cp {} destination/ \; -quit

它将传递连续的行,以find找到具有该名称的第一个文件(在当前目录中,递归)并复制它。

相关内容