Yanıtlar:
Normal yollarla silinemeyen dosyalara gelince, neredeyse nihai çözüm:
ls -il
İlk sütun, dosyaların inode sayısını gösterir.
find . -inum [inode-number] -exec rm -i {} \;
Bu, doğrulama sonrasında belirtilen inode numaralı dosyayı siler.
-delete
yerine cevabınızı değiştirdim -exec
, sonra kullandığınızı anladım ki rm -i
bu iyi bir fikirdi, ben de geri aldım. Üzgünüm.
Bu dosyaya ~/~
(tırnak işaretleri olmadan) başvurabilmelisiniz çünkü tilde genişlemesi sadece tilde ( ~
) sözcüğün en başında uygulanır.
rm ./~
de aynı nedenle
./~
Kelimenin tam anlamıyla " ~
geçerli dizinde adı verilen bir dosya veya klasör" anlamına geldiğinden , diğer yanıtlara kıyasla "en iyi" ve en basit çözüm olarak kabul ediyorum . Kaçış karakterleri veya inode referansları gibi hack yok.
./~
. Beş yıl sonra hafızam biraz bulanık, ancak bu yüzden ~/~
normalden çok önermemin sebebi bu ./~
: “Özellikle ~
[OP's] ana dizinde yer alan bir dosya ”; "geçerli dizinde" değil.
Alıntı yap ( rm '~'
) veya kaçış ( rm \~
).
Daima bunlardan biri (örneğin $
, örneğin ) veya --
dosya adının argüman olarak yorumlanmasını önlemek için ekleyin : rm -- -i
adlandırılmış dosyayı kaldırır -i
; rm -- *
Geçerli dizindeki tüm dosyaları silmek istediğinizde de kullanışlıdır : Yanlışlıkla rm -f *
bir dosya böyle adlandırıldığından yanlışlıkla .
--
sadece aşağıdaki argümanların parametre olarak yorumlanmasını durdurur - kabuğun *
burada olanı genişletmesini (örn. ) gerçekleştirmesini engellemez . (Diğer durumlar için bir alternatif olarak önerdiğini biliyorum, ama bir uyarı iyi olurdu.)