Я спрятал несколько файлов, используя команду:
mv * .*
, но теперь я не могу их найти. Я пытался использовать:
mv .* *
Но ничего не произошло (была показана ошибка). Если я бегу:
ls -la
Это показывает:
total 8
drwxrwxr-x 2 abhishek abhishek 4096 Mar 9 20:46 .
drwxrwxr-x 4 abhishek abhishek 4096 Mar 9 20:46 ..
Есть ли способ восстановить мои скрытые файлы?
Ваши файлы не скрыты, вы переместили все файлы (и каталоги, если какой-либо) один каталог UP.
Это происходит потому, что MV *. *
не будет работать, как вы думаете, это будет. Команда MV
будет перемещать только один файл в один файл (переименовать) или переместить один или несколько файлов в каталог. Он не будет перемещать несколько файлов в несколько файлов с некоторыми умными переименами.
Что случилось?
Давайте предположим, что у нас есть один каталог и 3 файла в нашем каталоге:
dir1
file1
file2
file3
Некоторые оболочки (например, Bash
, Dash
, ...) Разверните свою команду:
mv dir1 file1 file2 file3 . ..
Ваша расширенная команда соответствует второй форме синопсировки, вы найдете в MAN MV
:
MV [Опция] ... Справочник ... Directory
Обратите внимание на .
и ..
:
.
- текущий каталог, ..
- один каталог вверх. Команда означает: MOVE DIR1
, ,
,
, ,
и и
file3
и .
- ..
; Он также будет иметь в основном дать ошибку, что-то вроде:
mv: cannot move '.' to '../.'
, но, учитывая, что у вас есть разрешение на запись в этом каталоге, все остальные файлы были перемещены. Вы можете найти свои файлы в ..
(= один каталог вверх). Однако файлы с той же именем были перезаписаны, и вы не будете знать, какие файлы были в каком каталоге ранее.
Если у вас был подкаталог .hidden-dir
, он бы расширился до:
mv dir1 file1 file2 file3 . .. .hidden-dir
, то все файлы были бы перемещены в .hidden-dir
. Однако это кажется не так для вас, потому что вы видели бы .hidden-dir
в вашем LS -LA
выхода.
Как исправить
Запустить:
mv ../dir1 ../file1 ../file2 ../file3 .
Однако вам нужно знать имена.
Что вы должны были использовать
mmv '*' '.#1'
или
rename 's/^/./' *