Куда все делось?


1

Я перемещал файлы, когда случайно набрал команду, mv misc/* *а mv misc/* . не куда все делось, и как я могу вернуть ее, папка misc исчезла?


каким был ваш текущий рабочий каталог в то время
Nalaurien

/ Главная / kruegerdata / Gracilaria_GBS_data / assembled_reads внутри папки есть 2 вложенные папки различ и TMP, я пытался переместить содержимое Misc / одна папка до assembled_reads
user1952312

1
искать * внутри этой папки
Nalaurien

где бы это было? он бы создал папку во время переезда?
user1952312

1
да, внутри папки, в которой вы были, когда вы запускали команду.
djsmiley2k

Ответы:


6

Я думаю, что все пошло к последнему объекту, возвращенному вторым *. Если бы это был не каталог, вы бы получили ошибку.

Перейдите в каталог, в котором вы работаете, mvи вызовите echo *. Затем посмотрите в последний каталог, который напечатан.


Я думаю, что произошло следующее:

Ваш mv misc/* *был расширен вашей оболочкой до

mv multiple-objects-from-within-misc multiple-objects-from-within-the-current-directory

Последний объект в этой последовательности - это цель, куда пошли ваши файлы и каталоги. На основании ваших комментариев, я думаю, это был tmpкаталог. К сожалению, объекты miscиз верхнего каталога и из него теперь находятся в tmpцелом (и со всем, что уже было там), и вы не можете легко определить, кто откуда пришел.


1
echo * показывал имена всех файлов, но не там, где находился
user1952312

2

Если вы запустите ls, вы, вероятно, заметите, что у вас есть каталог с именем *

Да, вы переименовали его в *!

Чтобы вернуть его, используйте mv еще раз, но вам нужно выйти из *.

mv ./\* ./misc

\ Before * избегает его, то есть он трактуется как литерал *, а не пытается сопоставить что-то еще.

Если вы не можете вспомнить, где находились в файловой системе, используйте их find / -name '\*' 2>/dev/nullдля поиска.


1
бей меня к этому ...: P
Nalaurien

1
Это помогло мне найти файлы, которые были помещены в последнюю папку, которую я использовал tmp
user1952312

2
Для записи: я проверил bash, dash, sh( при условии , по dashисполняемому) zsh, cshи fish. Никто из них не создал *каталог.
Камиль Мачоровски

1
@KamilMaciorowski Я согласен с вашим решением. Либо "*" разрешает что-то, и все перемещается в него, либо текущее directpry пусто, *остается *, и mv кричит mv: target '*' is not a directory. Единственный способ получения *требует, чтобы 1) текущий каталог был пуст и 2) исходный каталог содержал один единственный файл.
ксеноид

1
@xenoid Вы правы, этот сценарий будет создать *каталог. Спасибо за этот вклад. Я рад, что я не опроверг этот ответ опрометчиво, он может быть полезен в целом. (В этом случае, однако, мы знали с самого начала, что текущий каталог не был пуст - miscбыл там.)
Камиль Макиоровский
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.