2017-09-02 89 views
0

我有一个名为“blocked.txt”文件,其中包含4000页的文件象下面这样:如何转义字符如冒号:和逗号,for循环?

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, 
.... 
.... 

我跑以下命令外壳上的文件复制到/ tmp/backup目录

for i in `cat blocked.txt`; do cp -f "${i}" /tmp/backup/ ; done 

但这给了我错误“你想覆盖?y/n”,即使我已经使用-f与cp

任何想法什么是错误的命令?

+0

我用你的代码,我不能重现(使用Linux和bash)。当我们尝试多次时,文件被正确复制并且没有错误信息 –

回答

1

你可能有一个别名,

alias cp="cp -i" 

或功能

cp() { 
    command cp -i "[email protected]" 
} 

该干扰。

为了解决这个问题,只需使用command cp,而不是仅仅cp

while read -r name; do 
    command cp "$name" /tmp/backup 
done <blocked.txt 

或指定的完整路径cp

while read -r name; do 
    /bin/cp "$name" /tmp/backup 
done <blocked.txt