"Mv файл", і тепер він відсутній


32

У вікні терміналу я набрав:

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

Зараз я не можу його знайти. Пропав. Я здійснив кілька пошуків і переглянув видалені файли, які можна відновити. Нічого. Пуф. Служить мені правильно для використання машини Windows раніше.

Хтось знає, куди це могло піти?


find / -iname thefilename -print можливо ?
Сергій Колодяжний

@Serg З thefilenameпочатковою назвою файлів, ця findкоманда не знайде його під новим іменем.
Eliah Kagan

Я зрозумів, що відразу після публікації коментаря. Моя початкова відповідь, якщо файл відсутній, - це використовувати find, але те, що я не усвідомлював, це те, що оп перейменовано файл замість того, щоб пересувати його
Сергій Колодяжний

Відповіді:


70

Він нікуди не дійшов, його в поточному каталозі. Він був перейменований у ....(чотири крапки).

Як будь-яке ім'я файлу, що має .спереду, обробляється прихованим файлом, тому він став прихованим. Отже, якщо ви це зробите ls, ви її не знайдете. Як завжди, вам потрібна опція -a(або -A) lsдля перегляду прихованих файлів, тобто ls -a(або ls -A) для їх перегляду.

Дозвольте мені розбити це, ви побігли mv filename ..\.., перші дві точки означали б батьківський каталог, якби він був ../, але ви використали зворотний косий ривок, ..\який вказує на оболонку, щоб уникнути наступного символу, але крапка .не має особливого значення для оболонки. Таким чином, він буде розглядати це як буквальний, .а останній .також доданий, тому ви отримали чотири точки ....як ім'я файлу.

Щоб повернутися до попереднього (оригінального) імені, запустіть mv .... filename.


2
Хахаха ... мені ніколи не приходило в голову. Там: "....". Спасибі! Я думаю, що вона трактувала першу крапку як точку .hideme.
Джон

2
Можна запропонувати la -A(з великою літерою А). Це робиться так само, як, ls -aале виключає .і ...
Paddy Landau

13

Запустіть, mv .... filenameщоб перейменувати його назад. ( mv ..\.. filenameтакож працювало б, але \це зайве - як це було у вашій початковій команді.)

  • Файл не видалено, тому пошук відновлюваних видалених файлів не знайшов його.
  • Як і в Windows, .і ..записи присутні у кожному каталозі і посилаються на "поточний" та "батьківський" каталоги відповідно. Але на відміну від Windows, послідовності більше двох точок не мають особливого значення. Хоча це незвично, ви абсолютно вільні назвати звичайний файл із іменем, що складається повністю з крапок, якщо він не менше трьох крапок.
  • На відміну від Windows, в Ubuntu оболонка використовується \як символ втечі, забезпечуючи, щоб оболонка розглядає наступний символ буквально, а не надає йому особливого значення. .Персонаж не має особливого значення в оболонці (зокрема, оболонка не те , що відповідає за прийняття .і ..записи роботи). Тому у вашому командуванні \.було рівнозначно ..
  • Як говорить heemayl , за замовчуванням більшість утиліт не показують файли та каталоги, імена яких починаються з а .. Оскільки ....починається з ., біг lsбез прапора -Aабо -aпрапорця не розкрив його.

1
Саме так я і знайшов. Мені було цікаво, чому мій "\" не діяв як втеча, але так, ніщо, щоб уникнути так нормально. Має сенс.
Джон

5

він все ще знаходиться в тому самому каталозі, просто "прихований" файл. Ви можете відновити його за допомогою "mv .... filename".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.