我意外地在路径中加了一个空格,然后移动了很多文件 - 它们在哪里?

我意外地在路径中加了一个空格,然后移动了很多文件 - 它们在哪里?

我使用以下代码移动了很多文件:

sourceDIR=/Volumes/MCOOPER/data
destDIR=/Volumes/MCOOPER2 /data
for i in {1..6000}
do
mv $sourceDIR/run$i.mat $destDIR/
done

现在我的所有文件都不见了。有什么方法可以找回它们吗?非常感谢。

答案1

请注意,您的定义destDIR根本没有设置其值;它只是尝试运行/data设置了该变量的程序。由于/data没有命名程序,因此不会发生任何有意义的事情。

那么,由于 how$destDIR未定义,您的mv命令行将简化为如下内容:

mv /Volumes/MCOOPER/data/run10.mat /

那么,似乎可以合理地假设您的文件已移至根目录。您检查过那里吗?

此外,作为一般建议,你至少需要养成三件事的习惯,以避免将来发生类似事故:

  • 总是引用你的参数扩展,除非你明确性希望它们被拆分:mv "$sourceDIR/run$i.mat" "$destDIR"
  • 除非您明确知道要替换文件,否则请mv使用开关运行-i以避免意外替换。
  • 当您知道要将内容移动到目录中时,最好在该目录名称后面加上一个斜杠,以防止意外重命名文件。即:destDIR=/Volumes/MCOOPER2/data/

此外,根据您的情况,您可能会或可能不会想要运行set -e,以使 shell 在任何命令失败时立即退出,而不是继续执行后续命令。

相关内容