使用cp复制多个文件

时间:2014-01-05 13:51:23

标签: linux

我想使用cp一次复制多个文件。问题是文件名在这里和那里都包含空格。所以我尝试了cp $(ls -1|tr ' ' '') dest,但显然我不能截断为零。然后我尝试删除空格的空格。那也没有用。我尝试在for循环中运行它。那也没有用。有人可以帮助我????

3 个答案:

答案 0 :(得分:0)

Ahn,好的。

我写的是这样的:

for i in *
do
if echo $i | grep " "
then
    NEWNAME=`echo $i | tr ' ' '_'`
    mv "$i" $NEWNAME
fi
done

但是在这种情况下你重命名文件(当然你必须根据你的需要调整代码) 我在.bashrc中有这个功能

答案 1 :(得分:0)

问题是您无法tr cp文件名 - 您必须为其提供磁盘上存在的文件的名称或它找不到它们。所以听起来你真正想要的是cp "file with spaces" destdir/filewithspaces每个文件:

ls -1 | while read filename; do
  cp "$filename" "$dest/${filename// /}" 
done

${filename// /}是bash-ism ${variable//search/replacement}的一个实例(请参阅Bash手册中的shell parameter expansion),以便为{{1}的所有实例提供变量的值}字符串替换为search字符串 - 因此在这种情况下,将所有空格替换为空。

答案 2 :(得分:0)

您可能希望尝试将findxargscp结合使用。有关详细信息,请参阅How can I use xargs to copy files that have spaces and quotes in their names?