问题就在这里。我在一个目录中有一堆文件。然后我在该目录中创建了另一个目录。然后我拼凑了这个命令:
find . -maxdepth 1 -type f -exec mv {} ./1 \;
此命令本来应该将目录中的所有文件移动到新创建的目录中,但我没有提供目录的名称,而是输入了1,如代码片段所示。因此,我最终只得到了一个名为1它现在包含来自其中一个消失的文件的内容,仅此而已。
我是否有机会恢复丢失的文件(或者可能是文件中的实际数据 - 它们都是文本文件)或者它们几乎永远消失了?
前:
misha@hp-laptop:~/Documents/prgmg/work$ ls
add.s bubble.s cpuid.s div.s hello.s mult.s sum.s test.s
a.out c demo.s gas.txt max.s print_arr.s test.c
misha@hp-laptop:~/Documents/prgmg/work$ mkdir asm
后:
misha@hp-laptop:~/Documents/prgmg/work$ ls
1 asm c
因此,如您所见,我想将所有汇编语言文件放入asm
目录中。就目前情况而言,1
是一个文本文件,其中包含来自的内容gas.txt
。
答案1
您已丢失所有文件,但 提供的最后一个文件除外find
,现在该文件名为./1
。请注意 会find
按其自身顺序查找文件,因此“最后一个”并不意味着您的想法。通过echo
在 前面插入mv
,我们会看到:
Script started on Thu 14 Jul 2016 07:02:01 PM EDT
+w3@aardvark:~(0)$ mkdir tmp/answer
+w3@aardvark:~(0)$ cd !$
cd tmp/answer
+w3@aardvark:~/tmp/answer(0)$ for i in a b c d; do
> mkdir $i
> done
+w3@aardvark:~/tmp/answer(0)$ for i in a/1 b/2 c/3 d/4 a/0 ; do
> touch $i
> done
+w3@aardvark:~/tmp/answer(0)$ touch 9 8 7 6
+w3@aardvark:~/tmp/answer(0)$ find . -maxdepth 1 -type f -exec echo mv {} ./1 \;
mv ./8 ./1
mv ./6 ./1
mv ./9 ./1
mv ./7 ./1
+w3@aardvark:~/tmp/answer(0)$ exit
Script done on Thu 14 Jul 2016 07:05:21 PM EDT