我有一个 .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
找到具有该名称的第一个文件(在当前目录中,递归)并复制它。