"File mv" dan sekarang hilang

32

Di jendela terminal, saya mengetik:

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

Sekarang saya tidak dapat menemukannya. Hilang. Saya menjalankan beberapa pencarian dan mencari melalui file yang dihapus yang dapat dipulihkan. Tidak ada. Puf. Melayani saya tepat untuk menggunakan mesin Windows tepat sebelumnya.

Adakah yang tahu ke mana perginya?

John
sumber
find / -iname thefilename -print mungkin ?
Sergiy Kolodyazhnyy
@Erger Dengan thefilenamesebagai nama file asli, findperintah itu tidak akan menemukannya di bawah nama baru.
Eliah Kagan
Saya menyadari bahwa setelah memposting komentar. Respons awal saya jika sebuah file hilang adalah menggunakan find tetapi yang saya tidak sadari adalah bahwa op mengganti nama file tersebut dan bukannya memindahkannya
Sergiy Kolodyazhnyy

Jawaban:

70

Ini tidak ke mana-mana, ini ada di direktori saat ini. Itu telah diubah namanya menjadi ....(empat titik).

Karena setiap nama file yang ada .di depannya diperlakukan sebagai file tersembunyi, maka file itu menjadi tersembunyi. Jadi, jika Anda melakukannya ls, Anda tidak akan menemukannya. Seperti biasa, Anda memerlukan opsi -a(atau -A) lsuntuk melihat file tersembunyi, yaitu ls -a(atau ls -A) untuk melihatnya.

Biarkan saya memecahnya, Anda berlari mv filename ..\.., dua titik pertama akan berarti direktori induk jika itu ../, tetapi Anda telah menggunakan garis miring ke belakang ..\yang menunjukkan shell untuk melarikan diri dari karakter berikutnya tetapi sebuah titik .tidak memiliki arti khusus untuk shell. Jadi, itu akan memperlakukannya sebagai literal .dan yang terakhir .juga ditambahkan, sehingga Anda mendapat empat titik ....sebagai nama file.

Untuk kembali ke nama sebelumnya (asli), jalankan mv .... filename.

heemayl
sumber
2
Hahaha ... tidak pernah terpikir olehku. Itu ada: "....". Terima kasih! Saya kira itu menafsirkan titik pertama sebagai titik .hideme.
John
2
Boleh saya sarankan la -A(dengan modal A). Ia melakukan hal yang sama seperti ls -atetapi mengecualikan .dan ...
Paddy Landau
13

Jalankan mv .... filenameuntuk mengganti nama kembali. ( mv ..\.. filenameakan bekerja juga, tapi \itu berlebihan - seperti dalam perintah asli Anda.)

  • File belum dihapus, itulah sebabnya mencari file terhapus yang dapat dipulihkan tidak menemukannya.
  • Seperti di Windows, .dan ..entri ada di setiap direktori dan merujuk ke direktori "saat ini" dan "induk" masing-masing. Tetapi tidak seperti di Windows, urutan lebih dari dua titik tidak memiliki arti khusus. Meskipun tidak biasa, Anda sepenuhnya bebas untuk menamai file biasa dengan nama yang seluruhnya terdiri dari titik-titik, sepanjang setidaknya tiga titik.
  • Tidak seperti di Windows, di Ubuntu shell menggunakan \sebagai karakter pelarian, memastikan shell memperlakukan karakter berikut secara harfiah daripada memberinya makna khusus. The .karakter memiliki arti khusus di shell (khususnya, shell tidak apa bertanggung jawab untuk membuat .dan.. entri bekerja). Karena itu, dalam perintah Anda, \.setara dengan ..
  • Seperti yang dikatakan heemayl , secara default sebagian besar utilitas tidak menampilkan file dan direktori yang namanya dimulai dengan a .. Sejak ....dimulai dengan ., berjalan lstanpa -Aatau -abendera tidak mengungkapkannya.
Eliah Kagan
sumber
1
Persis seperti itulah saya menemukannya. Saya bertanya-tanya mengapa "\" saya tidak bertindak sebagai pelarian, tapi ya, tidak ada yang lolos sehingga diperlakukan secara normal. Masuk akal.
John
5

masih di direktori yang sama, hanya file 'tersembunyi' sekarang. Anda dapat memulihkannya dengan "mv .... nama file".

Bruce
sumber