我使用以下代码移动了很多文件:
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 在任何命令失败时立即退出,而不是继续执行后续命令。