Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用cp复制多个文件_Linux - Fatal编程技术网

Linux 使用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一次性复制多个文件。问题是文件名包含空格。所以我尝试了
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\