Penting untuk dipahami bahwa ini bukan jenis "korupsi sistem file" yang fsck
akan membantu. Sejauh menyangkut filesystem, nama file dapat berupa urutan byte , selama tidak ada byte tunggal yang memiliki nilai 0x00 (ASCII NUL, C end-of-string marker) atau 0x2F ( /
, pemisah direktori). (Jika nama file entah bagaimana mendapatkan byte 00 atau 2F tertanam di dalamnya, fsck
harus memperbaikinya.)
Alih-alih, yang Anda miliki adalah nama file yang menurut perangkat lunak aplikasi (Dolphin, ls
) berisi karakter yang tidak dapat ditampilkan di "lokal" Anda, jadi itu menggantinya dengan karakter placeholder. Anda juga tidak dapat mengetikkan karakter-karakter itu, jadi memanipulasi file lebih sulit, tetapi Anda dapat melakukannya selama Anda melakukannya tanpa pernah mengetik atau menyalin dan menempelkan nama. Sebagai contoh, jika Anda menghapus atau mengganti nama file-file yang bermasalah langsung dari dalam Dolphin, itu seharusnya hanya berfungsi (saya akan mengatakan bahwa jika itu tidak berhasil, itu adalah bug di Dolphin).
Jika Anda perlu melakukan sesuatu tentang mereka dari shell (misalnya, jika mereka dimiliki oleh root
dan oleh karena itu tidak dapat dimodifikasi oleh program GUI), Anda dapat memberi nama mereka secara tidak langsung menggunakan pola "glob", yang akan diperluas ke urutan yang benar (s) dari byte dan diteruskan.
Sekarang, tentu saja, Anda tidak akan ingin menghapus hal-hal secara tidak sengaja karena pola glob Anda terlalu cocok, jadi rekomendasi saya adalah menggunakan rename
utilitas Perl untuk mengonversi setiap nama file ke pengkodean hex-nya:
$ rename '$_ = unpack("H*", $_)' *
Ini tidak menghancurkan informasi apa pun - baik file itu sendiri, maupun makna apa pun yang semula mungkin telah dikodekan dalam nama file sebelum hancur. Dapat dibatalkan untuk file tertentu dengan mis
$ rename '$_ = pack("H*", $_)' 696d706f7274616e742e646f63
Perhatian: ada dua program bernama rename
, dari asal yang berbeda; perintah di atas hanya akan bekerja dengan yang berasal dari Perl. Di Ubuntu, yang Anda inginkan adalah yang dari paket "rename", bukan yang dari paket "util-linux". rename -h
akan membedakan: inilah yang Anda inginkan ...
$ rename -h
Usage:
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E perlexpr]*|perlexpr
[ files ]
# ...
... ini bukan yang kamu inginkan ...
$ rename -h
Usage:
rename [options] <expression> <replacement> <file>...
# ...
Hal utama yang harus dicari adalah "perlexpr". Anda mungkin memiliki versi yang lebih lama dari perubahan nama Perl yang tidak mengerti semua opsi di atas, tetapi perintah yang saya perlihatkan masih tetap berfungsi.
Sunting: Di bawah 14.04 .5 skrip perl yang disertakan untuk rename
tidak mendukung -h switch. Anda dapat mengonfirmasi bahwa Anda memiliki yang benar dengan memeriksa halaman manualnya man rename
yang dalam hal ini baris teratas akan berisi:
RENAME (1) Panduan Referensi Programmer Perl RENAME (1)