我正在使用一个命令:
xargs -a file_list.txt cp -t /path/to/dest
但带有空格的文件名会被剪切,因此不会被复制。
可以做什么?
答案1
cat file_list.txt | tr '\n' '\0' | xargs -r0i cp -t /path/to/dest/ "{}"
答案2
Xargs 很好用/速度快/等等,但是对于 shell 脚本新手来说并不容易理解。
我认为这将更具可读性(并且比使用子shell更干净)。
#!/bin/bash
while read filename; do
cp -a "$filename" /path/to/dest
done < file_list.txt
答案3
你可以这样做
IFS=$'\n' ; for file in `cat file_list.txt` ; do cp $file /path/ ; done
解释
- 将内部字段分隔符设置为换行符
- 读取 file_list.txt 并循环遍历每一行,将行内容分配给名为 $file 的变量
- 在每个循环中,对 $file 执行 cp 命令(您也可以添加更多步骤)
如果它是一个 shell 脚本并且格式正确
#!/bin/bash
IFS=$'\n'
for file in `cat file_list.txt` ; do {
cp $file /path/
} done