\ r olan bir dosyayı dosya adı olarak silme veya yeniden adlandırma


10

Adı tek karakter gibi görünen sinir bozucu küçük bir dosya var ve bu karakter bir \r

Bunu nasıl silebilirim?

Bu ile ne olsun ls -bl:

-rw-rwxr--+   1 root             snapplewriters        0 Aug 29  2011 \r

ls -l sadece "?"


Böyle bir dosyayı nasıl buldunuz?
mkaito

Yanıtlar:


16

Bize ls -lidaha sonra, dosyaya (ilk sütun) için inode numarasını almak kullanmak findsilmek için (varsayarak inode 12345 ise):

find . -inum 12345 -exec rm -i {} \;


Teşekkür ederim - bu son derece yararlı - Ben dosyaya kesin sistem referans bir tür olması gerektiğini hissettim ama (hızlı bir şekilde zaten) bulamadım.
Colin

1
findYüklü sürüme bağlı olarak şunları da yapabilirsinizfind . -inum 12345 -delete
William Jackson

Benim için sürüm ne kadar agnostikse o kadar iyidir. Ama iyi öneri hiç-daha az. :)
Garrett


5

Şahsen Python'a ulaşırdım:

>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')

Ancak kaçış karakterlerini anlarsanız bunu kabuktan da yapabilirsiniz.

$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file \r’? y
removed \r

Mutfağında bir balyoz da var sanırım? Bir ceviz kırmanız gerektiğinde? :-)
mivk

3

<carriage return>Bash kabuğunu kullanıyorsanız adlı bir dosyayı kaldırmanın başka bir hızlı yolu :

$ rm <control-v><control-m>

2

Tek karakterli dosya adları olağandışıdır ve dizininizde başka böyle dosyalar yoksa, bunu deneyebilirsiniz:

rm ?

Öğrenmek ya da garip karakterleri nasıl alıntılayacağımı öğrenmek için çok tembelim, bu yüzden zor isimleri olan dosyalarla sıkıştığımda bunun çeşitli varyantlarını kullandım.


-1 Bu , tek bir karakter adına sahip tüm dosyalarla eşleşir - Bkz man bash. İçindeki "Yol Adı Genişletmesi" . Deneyintouch a b c d $'\r'; rm ?
l0b0

1
@ l0b0: Evet? Yazdığım gibi, tek karakterli dosya adları olağandışı. Dizinde böyle bir dosya bulunmaması muhtemeldir ve bu durumda bu işe yarar. Aksi takdirde "rm -i?" kullanılabilir.
Thomas Padron-McCarthy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.