Saya ingin mengganti nama file dengan nama aneh menjadi sesuatu yang masuk akal, namun saya tidak dapat: /
$ mv *_000c.jpg 000c.jpg
mv: cannot move '?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory
Saya sudah mencoba menggunakan nomor inode seperti yang disarankan di beberapa tempat di internet:
$ ls -il *000c.jpg
ls: '?j?Z?R?C1_000c.jpg': No such file or directory
213915 -rw-r--r-- 1 wolf wolf 794655 Jul 21 2012 '?j?Z?R?C1_000c.jpg'
$ find . -inum 213915 -print0 | xargs -0 -I '{}' mv '{}' 000c.jpg
mv: cannot move './?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory
Apa yang harus saya lakukan?
ls
di direktori itu? Apakah file ditampilkan sebagai file biasa? Saya meminta untuk memastikan bahwaNo such file or directory
ini adalah kesalahan globbing dan bukan indikasi sistem file yang rusak.fsck
? Saya mungkin rusak. Bagaimana file mendapatkan nama itu?ls
)?
untuk surat-surat yang tidak dapat ditampilkan. Coba beralih ke font yang sepenuhnya unicode.*_000c.jpg
tetapi itumv
kemudian tidak dapat memproses file. Ini, IMHO, menunjukkan sistem file yang rusak. ... atau mungkin dari sistem file yang dipasang pada jaringan yang hilang (dengan entri direktori masih di-cache), atau sesuatu.Jawaban:
Ringkasan komentar yang relevan:
Sistem file Unix memungkinkan setiap karakter dalam nama file selain dari
\0
(nul) dan/
(garis miring). Fakta yangls
menunjukkan tanda tanya hanya karena tidak dapat menampilkan beberapa karakter dari nama file di lokal saat ini (yang merupakan salah satu alasan mengapa Anda harus menghindari penguraian output darils
).Namun, dengan share Samba, Anda tampaknya memiliki persyaratan yang lebih ketat pada nama file daripada pada sistem file Unix standar.
Karena file tersebut memiliki nama yang "ilegal" pada share Samba perantara Anda, file tersebut tidak dapat diakses dengan nama yang benar pada mesin yang me-mount share.
Tidak
mv
berhasil karena nama kembali dari pangsa Samba untuk perluasan pola globbing bukan nama sebenarnya dari file pada sistem file hosting, hanya versi nama Samba sendiri yang rusak.Solusi Anda adalah masuk ke server yang benar-benar meng-host file (pada sistem file dengan aturan penamaan yang kurang ketat dari Samba) dan mengubah nama file di sana. Ini adalah tindakan yang benar.
Lihat juga obrolan Unix & Linux tentang pertanyaan ini .
sumber
Sebelum saya belajar tentang cara mengutip dalam shell unix, saya akan menggunakan
dired
mode emacs untuk mengubah nama atau menghapus file yang sulit dicocokkan. Anda cukup membuka direktori di emacs:... maka Anda dapat menggunakan tombol panah untuk menavigasi ke file yang ingin Anda ubah dan ganti namanya
R
.?
akan memberi Anda daftar perintah yang tersedia (Anda juga dapat menghapus file yang sulit dicocokkan).Kemudian Anda
C-x C-c
keluar dari emacs dan selesai.sumber
Seringkali dengan nama file yang tidak biasa Anda dapat menambahkan "./" sebelum nama file dan Linux akan mengenalinya dengan benar. Misalnya: $ ls ./?j?Z?R?C1_000c.jpg
sumber