Bash 如何在for循环中转义冒号和逗号等字符?
我有一个名为“blocked.txt”的文件,其中包含4000个文件的名称,如下所示:Bash 如何在for循环中转义冒号和逗号等字符?,bash,rsync,cp,Bash,Rsync,Cp,我有一个名为“blocked.txt”的文件,其中包含4000个文件的名称,如下所示: 1502146676.VdeI4b5c5cbM804631.vps47619.domain.local:2, 1502146676.VdeI4b5c5cdM808282.vps47619.domain.local:2, 1502146677.VdeI4b5c5d3M192892.vps47619.domain.local:2, 1502146677.VdeI4b5c5d7M213070.vps47619.do
1502146676.VdeI4b5c5cbM804631.vps47619.domain.local:2,
1502146676.VdeI4b5c5cdM808282.vps47619.domain.local:2,
1502146677.VdeI4b5c5d3M192892.vps47619.domain.local:2,
1502146677.VdeI4b5c5d7M213070.vps47619.domain.local:2,
1502146677.VdeI4b5c5e5M796312.vps47619.domain.local:2,
1502146678.VdeI4b5c5efM412992.vps47619.domain.local:2,
1502146678.VdeI4b5c5f1M613275.vps47619.domain.local:2,
1502146679.VdeI4b5c5f8M11301.vps47619.domain.local:2,
1502146682.VdeI4b5c66dM115848.vps47619.domain.local:2,S
1502146682.VdeI4b5c676M608733.vps47619.domain.local:2,
1502146685.VdeI4b5c69aM1652.vps47619.domain.local:2,
....
....
我在shell上运行下面的命令将文件复制到/tmp/backup目录
for i in `cat blocked.txt`; do cp -f "${i}" /tmp/backup/ ; done
但这会给我错误“您想覆盖吗?是/否”,即使我在cp中使用了-f
知道命令中有什么错误吗?您可能有别名
alias cp="cp -i"
或功能
cp () {
command cp -i "$@"
}
这会干扰
要解决此问题,只需使用命令cp
,而不是仅使用cp
:
while read -r name; do
command cp "$name" /tmp/backup
done <blocked.txt
while read -r name; do
/bin/cp "$name" /tmp/backup
done <blocked.txt
我已经使用了您的代码,但无法复制(使用linux和bash)。我们多次尝试此操作时,文件已正确复制且没有错误消息