Linux 使用cp复制多个文件
我想使用cp一次性复制多个文件。问题是文件名包含空格。所以我尝试了Linux 使用cp复制多个文件,linux,Linux,我想使用cp一次性复制多个文件。问题是文件名包含空格。所以我尝试了cp$(ls-1 | tr'')dest,但显然我不能将其截断为零。然后我尝试将空空间删除为空。那也不行。我试着在一个for循环上运行它。那也不行。有人能帮我吗???安,好的 我写的是: for i in * do if echo $i | grep " " then NEWNAME=`echo $i | tr ' ' '_'` mv "$i" $NEWNAME fi done 但是在这种情况下,您可以重命名文件
cp$(ls-1 | tr'')dest
,但显然我不能将其截断为零。然后我尝试将空空间删除为空。那也不行。我试着在一个for循环上运行它。那也不行。有人能帮我吗???安,好的
我写的是:
for i in *
do
if echo $i | grep " "
then
NEWNAME=`echo $i | tr ' ' '_'`
mv "$i" $NEWNAME
fi
done
但是在这种情况下,您可以重命名文件(当然,您必须根据需要调整代码)
我在我的.bashrc中有这个函数。问题是你不能
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手册中的)若要给出一个变量的值,将搜索
字符串的所有实例替换为替换
字符串-因此在本例中,将所有空格替换为零。您可能希望尝试将查找
与xargs
和cp
结合使用。请参阅以获取更多信息。尝试避开空白,只需编写\
而不是简单的空白。尝试了此cp$(ls | tr''''''\')/home/user
,cp$(ls | tr''''''\')/home/user
…我不明白的工作:是否还要重命名文件以删除空格?还是只想复制它们?cp*/home/user/应该只用于复制。shell应该将扩展中的每个文件名视为命令的单个参数。但是我不想复制所有文件,因为我无法创建常规文件file@HariKMalayath它是否告诉您无法创建哪个文件?如果当前目录包含任何子目录,或者目标目录位于源目录下,则无法使用此代码。无法创建所有22个子目录。不,目的地是其他地方,我经常去。我从那个帖子里得到了答案<代码>查找-exec cp“{}”dest\代码>