„Plik mv”, a teraz go brakuje

32

W oknie terminala wpisałem:

mv filename ..\..      [Note the wrong slash.]

Teraz nie mogę tego znaleźć. Odszedł. Przeprowadziłem kilka wyszukiwań i przejrzałem usunięte pliki do odzyskania. Nic. Puf Służy mi tuż przed użyciem komputera z systemem Windows.

Czy ktoś wie, gdzie to mogło być?

Jan
źródło
find / -iname thefilename -print może ?
Sergiy Kolodyazhnyy
@Serg Z thefilenameoryginalną nazwą pliku, to findpolecenie nie znajdzie go pod nową nazwą.
Eliah Kagan
Uświadomiłem sobie, że zaraz po opublikowaniu komentarza. Moja początkowa odpowiedź, jeśli brakuje pliku, polega na użyciu find, ale nie zdawałem sobie sprawy, że
operacja

Odpowiedzi:

70

Nigdzie nie poszedł, jest w bieżącym katalogu. Został przemianowany na ....(cztery kropki).

Jak każda nazwa pliku z .przodu jest traktowana jako plik ukryty, więc została ukryta. Więc jeśli to zrobisz ls, nie znajdziesz tego. Jak zawsze, potrzebujesz opcji -a(lub -A), lsaby wyświetlić ukryte pliki, tj. ls -a(Lub ls -A), aby je zobaczyć.

Pozwólcie, że go podzielę, uciekłeś mv filename ..\.., pierwsze dwie kropki oznaczałyby katalog macierzysty, gdyby tak było ../, ale użyłeś ukośnika wstecznego, ..\który wskazuje, że shell ucieka od następnego znaku, ale kropka .nie ma specjalnego znaczenia dla shell. Więc potraktuje to jako dosłowny .i ostatni .również dodany, więc masz cztery kropki ....jako nazwę pliku.

Aby przywrócić poprzednią (oryginalną) nazwę, uruchom mv .... filename.

heemayl
źródło
2
Hahaha ... nigdy nie przyszło mi do głowy. Tu jest: "....". Dzięki! Chyba zinterpretował pierwszą kropkę jako kropkę .hideme.
Jan
2
Mogę zasugerować la -A(z dużą literą A). Robi to samo, ls -aale wyklucza .i ...
Paddy Landau
13

Uruchom, mv .... filenameaby zmienić nazwę z powrotem. (też mv ..\.. filenameby działało, ale \jest zbyteczne - jak to było w twoim pierwotnym rozkazie).

  • Plik nie został usunięty, dlatego wyszukiwanie odzyskanych usuniętych plików nie znalazło go.
  • Podobnie jak w systemie Windows, .a ..wpisy są obecne w każdym katalogu i odnoszą się do „bieżący” i „rodzic” katalogów odpowiednio. Jednak w przeciwieństwie do systemu Windows sekwencje więcej niż dwóch kropek nie mają żadnego specjalnego znaczenia. Chociaż jest to niezwykłe, możesz swobodnie nazwać zwykły plik o nazwie składającej się wyłącznie z kropek, o ile ma on długość co najmniej trzech kropek.
  • W przeciwieństwie do systemu Windows, w Ubuntu powłoka używa \jako znaku ucieczki, dzięki czemu powłoka traktuje następujący znak dosłownie, a nie nadaje mu specjalne znaczenie. .Znak ma specjalne znaczenie w powłoce (w szczególności, powłoka nie jest to, co jest odpowiedzialne za stworzenie .i ..wpisy działać). Dlatego w twoim poleceniu \.było równoważne ..
  • Jak mówi heemayl , domyślnie większość programów narzędziowych nie wyświetla plików i katalogów, których nazwy zaczynają się od .. Od ....rozruchów ., działających lsbez -Alub -aflaga nie ujawniać go.
Eliah Kagan
źródło
1
Właśnie tak to znalazłem. Zastanawiałem się, dlaczego moje „\” nie zadziałało jak ucieczka, ale nie ma nic do ucieczki, tak traktowanego normalnie. Ma sens.
Jan
5

nadal znajduje się w tym samym katalogu, teraz jest to tylko „ukryty” plik. Możesz go odzyskać za pomocą „mv .... nazwa pliku”.

Bruce
źródło