Garip bir isimle bir dosyayı nasıl silebilirim?


33

POSIX bellek eşleme işlevini ( mmap) kullanan bir program yazdım.

Program bir dosya ( a.dat) alır ve okuma / yazma için hafıza eşler.

Programdaki hatalardan dolayı, programı her çalıştırdığımda bazı garip isimler (örneğin ?d?P?^z??d?P?^z?) içeren bir dosya oluşturulur. Hata çözüldü, ancak dosyaları silemiyorum.

Komut satırını kullanarak veya pencere yöneticisinden seçerek / silerek onu silemiyorum.

Peki nasıl silmeliyim? Ubuntu 11.04 kullanıyorum.


1
Dosya adını kolayca yazamamanıza rağmen, grafik bir dosya yöneticisinden silmek iyi sonuç vermelidir. Hangi hatayı alıyorsun?
Thomas,

2
@Aditya, adlarını tek tırnak işareti ( rm '?d?P?^z??d?P?^z?') ile çıkarken bu dosyaları komut satırından silmekle ilgili sorunum yok . Bunu denedin mi?
Frédéric Hamidi

grafiksel pencere yöneticisinden silmek sadece 'dosya adı' dosyasını silemediğini söylüyor. @ Frédéric Hamidi Bir dosyayı silmeme yardımcı olduğunuz için teşekkür ederiz. Ancak '? M? P ???)? M? P ???)' adlı diğeri silinmiyor ... Hata mesajı "rm:` m `P ?? ?? ? P ???) ': Böyle bir dosya veya dizin yok "
AK

1
@Aditya, diğer dosyanın adına yazılabilir karakter içermemesi gerektiğini söyledi. Aşağıdaki adımları deneyin: 1 / Geçerli klasördeki tüm geçerli dosyaları, klasör rm *içindeki 2 / Issue .
Frédéric Hamidi

1
Dosya adını yazarken tırnak işaretleri ile başlamaya çalışın, sonra en kısa sürede otomatik tamamlama kullanın (bir veya iki karakter sonra). Otomatik tamamlama, kabuğun adı otomatik olarak tamamlamasını sağlamak için [sekme] tuşuna basar. Bu şekilde isimlerden doğru bir şekilde kaçmak için daha başarılı olabilirsiniz.

Yanıtlar:


45

rm -i -- *Her dosyayı silmenizi isteyecektir. Çok sayıda dosya varsa '*' seçeneğini daha dar bir eşleşmeyle değiştirebilirsiniz. İşlemeyi --durdurur, böylece adlı bir dosya başarıyla -dkaldırılır rm.

Bunu geçmişte kullandım ve sevmediğiniz özel bir karaktere ya da 2'ye kadar işe yaradı.


1
Bu, örneğin -d isimli bir dosya için işe yaramaz.
SCO,

2
Eğer sen olmasaydın çalışır ve sürümünüze bağlı ise @SCO rm, yapabileceğiniz rm bazı sürümleri söyler artık komut satırı satırı sonra anahtarları vardır ve dosya adları gibi başka args tedavi etmek. rm -i -- *----
JimR,

1
Kullanımı: Ben yorumunu içermelidir Bu cevap @JimR önerdiği düşünüyorum --içinde rmkomuta.
Felipe Alvarez

16

ls -liTüm dosyaları kendi inode'larına göre göstermek için kullanabilirsiniz . Ardından dosyayı kaldırmak için bu komutu çalıştırın:

find . -inum ${INODE_NUM} -delete

Eklediğim -maxdepth 1Emin olmak için benim Bul için:

find . -maxdepth 1 -inum ${INODE_NUM} -delete

1
Kesin konuşursak, ls -iyeterince iyidir.
Scott

lsdosyaları silmez. OP bunu istiyor.
Felipe Alvarez,

4
Cevabınızın ilk satırı, “ ls -litüm dosyaları kendi düğümleriyle göstermek için kullanabilirsiniz” diyor ls -i. Dosya adlarının ve bunlara karşılık gelen inode numaralarının listesini almak için yeterince iyi olduğuna işaret ediyorum . (Ama ls -iaeğer nokta dosyaları eklemek istiyorsanız tabii ki ihtiyacınız var .)
Scott

Yanlış dosya adının kullanımını en aza indirgemek için -deleteseçeneği basitçe iletmek daha iyidir find.
ScumCoder
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.