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

1

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

user1952312
источник
каким был ваш текущий рабочий каталог в то время
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для поиска.

djsmiley2k
источник
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был там.)
Камиль Макиоровский