我错误地使用 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
如果您对结果满意,请删除)