我想使用cp一次复制多个文件。问题是文件名在这里和那里都包含空格。所以我尝试了cp $(ls -1|tr ' ' '') dest
,但显然我不能截断为零。然后我尝试删除空格的空格。那也没有用。我尝试在for循环中运行它。那也没有用。有人可以帮助我????
答案 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)
您可能希望尝试将find
与xargs
和cp
结合使用。有关详细信息,请参阅How can I use xargs to copy files that have spaces and quotes in their names?。