无法访问使用双引号复制的文件

无法访问使用双引号复制的文件

我错误地使用 cp 命令复制了 100 个文件

$ cp file1 "/data/ file1"
$ cp file2 "/data/ file2"

注意:- /data 和 file2、file1 之间有一个空格

在 /data 目录中,我可以看到文件,但无法复制或移动。文件未找到错误是在访问/复制/移动这些文件时发生的。

$ cd /data/ ; ls
file1 
file2
$ cp file1 /data1/
can not stat file1 

如何解决问题。

答案1

你可以使用通配选择匹配有问题的文件,例如:

 for f in ./*file?
 do
   echo "[$f]"
 done

答案2

空格是问题所在,您需要在对文件的引用中转义它。要一次性修复所有文件(取决于您的 shell——至少在 Bash 中有效):

for FILE in /data1/" "* ; do mv "${FILE}" "${FILE# }" ; done

答案3

空格现在是文件名的一部分,您需要在使用cp或时将其包含在文件名中mv

mv " file1" /data1/

或者更好的是,摆脱该空间:

mv " file1" /data1/file1

使用 Perl 重命名工具一次性对所有文件执行此操作:(小心,有几种不同的重命名工具

prename -n 's#^ #/data1/#' " file"*

-n如果您对结果满意,请删除)

相关内容