我遇到麻烦了。我按了“Enter”,但没有输入目标。我在同一目录中有两个文件,它们的名称中有一个共同的标识符。我想将它们移动到一个文件夹中,所以我输入了
mv /路径/文件/标识符*
但在输入目标之前,我按下了“enter”,我的一个文件消失了,该文件的字母顺序更高。现在我找不到那个文件了。我在我的
终端中的 Abhishek@abhishek$ 目录。
有人能详细回答我如何找到它或者它是否被其他文件覆盖吗?我是 Linux 世界的菜鸟,但我知道终端的工作原理。所以我可以执行一些基本命令。
答案1
如果您只有两个文件,例如:
IDENTIFIER_1
IDENTIFIER_2
那么你就IDENTIFIER_2
用 的内容覆盖了IDENTIFIER_1
。
例子:
$ cat IDENTIFIER_1
IDENTIFIER_1
$ cat IDENTIFIER_2
IDENTIFIER_2
$ ls -og IDENTIFIER_*
-rw-rw-r-- 1 0 Mai 19 18:28 IDENTIFIER_1
-rw-rw-r-- 1 13 Mai 19 18:27 IDENTIFIER_2
$ mv IDENTIFIER_*
$ ls -og IDENTIFIER_*
-rw-rw-r-- 1 13 Mai 19 18:30 IDENTIFIER_2
$ cat IDENTIFIER_2
IDENTIFIER_1
如果你有两个以上的文件,那么就会出现错误:
$ ls -og IDENTIFIER_*
-rw-rw-r-- 1 0 Mai 19 18:28 IDENTIFIER_1
-rw-rw-r-- 1 13 Mai 19 18:27 IDENTIFIER_2
-rw-rw-r-- 1 0 Mai 19 18:28 IDENTIFIER_3
$ mv IDENTIFIER_*
mv: target ‘IDENTIFIER_3’ is not a directory
欲了解更详细的解释,请参阅@Serg。
答案2
我只是想扩展一下 AB 发布的答案。
通配符仅将 IDENTIFIER_* 扩展为 IDENTIFIER_* 的所有实例。因此,mv IDENTIFIER_*
实际上读作mv IDENTIFIER_1 IDENTIFIER_2
。
for file in *; do
这与 for 循环像 这样、以及echo IDENTIFIER_*
等等工作的原因相同。
现在,3 个文件不起作用的原因又是因为命令mv IDENTIFIER_*
扩展为,而太多的参数mv IDENTIFIER_1 IDENTIFIER_2 IDENTIFIER_3
让您感到困惑。mv
答案3
您用第一个文件覆盖了第二个文件。
除非你立即卸载分区/设备并尝试使用类似以下工具恢复它,否则它将丢失测试磁盘,照相记录,删除, 管他呢。