我有一个名为“list.txt”的文本文件中列出的文件列表,如下所示:
one file.jpg
two file.jpg
three file.jpg
现在我想将所有这些文件复制到另一个目录,然后尝试这样做:
cp $( cat 列表.txt ) 其他目录
但是,正如您所见,文件中有空格,然后 bash 将名称分成两部分,并且没有复制文件。
我尝试用引号和双引号括住名称,也尝试用反斜杠和空格 (\ ) 以及它们的组合来转义,但都无济于事。
"one file.jpg"
'one file.jpg'
one\ file.jpg
那么我该怎么办?
答案1
这将逐个复制文件(即每个cp
命令一个文件),将每个源文件名括在双引号中:
awk '{ print "cp \"" $0 "\" other_directory }' list.txt | bash
答案2
cp
对于(和mv
等)的具体情况ln
,这应该有效:
cat list.txt | xargs -d $'\n' cp -t b
这是因为它允许您以参数位于最后的方式-t
运行。cp