bash 命令从包含目录的列表中复制目录 - 出现错误

bash 命令从包含目录的列表中复制目录 - 出现错误

我有一个文件内的目录列表,并尝试将这些目录复制到指定的目的地。

测试.lst:

dir1
dir2
dir three

该列表与目录以及目标位于相同的相对路径内,例如:

/dirs/dir1
/dirs/dir2
/dirs/dir three
/dirs/test.lst

在 ./dirs 中执行的命令:

cat test.lst | xargs -I {} cp -R {} ./_DEST

预期结果:

Directories in list copied from /dirs to /dirs/_DEST

实际结果:

[.../dirs] # cat test.lst | xargs -I {} cp -R {} ./_DEST
cp: cannot stat `dir1\r': No such file or directory
cp: cannot stat `dir2\r': No such file or directory
cp: cannot stat `dir three\r': No such file or directory

我尝试将每个目录的完整路径添加到列表中(即'/...dirs/dir1'),但没有帮助。
所有目录都已放宽到 777,并且由执行命令的同一用户/组拥有。

答案1

您当前的问题是您的test.lst文件似乎具有 DOS 样式的 CRLF 行结尾(CR 由\r转义字符表示)。

您可以使用 转换文件dos2unix,但是不要使用catxargs -I {}我建议删除 CR ,然后将分隔符sed设置xargs为换行符,例如。

sed 's/\r$//' test.lst | xargs -d '\n' cp -Rt ./_DEST --

相关内容