复制文件,从列表中获取文件名

复制文件,从列表中获取文件名

我正在使用一个命令:

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

解释

  1. 将内部字段分隔符设置为换行符
  2. 读取 file_list.txt 并循环遍历每一行,将行内容分配给名为 $file 的变量
  3. 在每个循环中,对 $file 执行 cp 命令(您也可以添加更多步骤)

如果它是一个 shell 脚本并且格式正确

#!/bin/bash

IFS=$'\n'

for file in `cat file_list.txt` ; do {
  cp $file /path/
} done

相关内容