Olduğunu anlamak önemlidir değil "dosya sistemi yolsuzluk" tür fsck
yardımcı olacaktır. Dosya sistemi söz konusu olduğunda, tek bir bayt 0x00 (ASCII NUL, C dize sonu işaretçisi) veya 0x2F ( dizin ayırıcı) değerine sahip olmadığı sürece dosya adları herhangi bir bayt dizisi olabilir /
. (Bir dosya adı bir şekilde içine yerleştirilmiş bir 00 veya 2F bayt alırsa, fsck
bunu düzeltmelidir.)
Bunun yerine, uygulama yazılımınızın (Dolphin ls
) , "yerel ayarınızda" görüntülenemeyen karakterler içerdiğini düşündüğü dosya adlarıdır , bu nedenle bunları yer tutucu karakterlerle değiştirir. Sen olamaz tipi Bunu dosyaları manipüle zordur, ya bu karakterleri, ancak sürece hiç yazarak veya kopyalayıp ismini yapıştırarak olmadan bunu olarak bunu yapabilirsiniz. Örneğin, sorunlu dosyaları doğrudan Dolphin içinden silerseniz veya yeniden adlandırırsanız, Just Work gerekir (Çalışmazsa, bunun Dolphin'de bir hata olduğunu söyleyecek kadar ileri gideceğim).
Kabuktan onlar hakkında bir şeyler yapmanız gerekiyorsa (örneğin, root
bir GUI programına aitse ve bu nedenle bir GUI programı tarafından değiştirilemiyorsa), doğru sıraya genişletilecek "glob" desenlerini kullanarak bunları dolaylı olarak adlandırabilirsiniz. bayt (lar) ı geçip geçti.
Şimdi, elbette, glob deseniniz çok fazla eşleştiği için yanlışlıkla öğeleri silmek istemezsiniz, bu yüzden tavsiyem, rename
her dosya adını onaltılı kodlamasına dönüştürmek için Perl yardımcı programını kullanmak olacaktır :
$ rename '$_ = unpack("H*", $_)' *
Bu herhangi bir bilgiyi yok etmez - ne dosyanın kendisi, ne de anlamı, dosya adında karıştırılmadan önce kodlanmış olabilir. Belirli dosyalar için örn.
$ rename '$_ = pack("H*", $_)' 696d706f7274616e742e646f63
Dikkat: rename
Farklı kökenlerden adlandırılmış iki program vardır ; Yukarıdaki komutlar yalnızca Perl kaynaklı komutlarla çalışır. Ubuntu'da, istediğiniz "util-linux" paketinden değil, "rename" paketindekidir. rename -h
ayırt edecek: istediğin bu ...
$ rename -h
Usage:
rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E perlexpr]*|perlexpr
[ files ]
# ...
... istediğin bu değil ...
$ rename -h
Usage:
rename [options] <expression> <replacement> <file>...
# ...
Aranacak anahtar şey "perlexpr" dir. Perl yeniden adlandırma işleminin yukarıdaki seçeneklerin tümünü anlamayan eski bir sürümüne sahip olabilirsiniz, ancak gösterdiğim komut yine de çalışmalıdır.
Düzenleme: 14.04 .5 altında içerdiği perl komut dosyası rename
-h anahtarını desteklemiyor. Man sayfasını kontrol ederek doğru olana sahip olduğunuzu onaylayabilirsiniz man rename
, bu durumda üst satır şunları içerir:
RENAME (1) Perl Programcıları Başvuru Kılavuzu RENAME (1)