İnode numarasını kullanarak Linux'ta bir dosyayı kaldırma


15

UNIX / Linux üzerinde özel karakterlerle bir dosya oluşturursanız, dosyayı touch \"la*kaldıramazsınız rm "la*. Inode numarasını kullanmanız gerekir ( \adından önce eklerseniz bunu biliyorum, ancak dosya oluşturmada kullanıldığını bir kullanıcı olarak tahmin etmeniz gerekir).

Man sayfasını rm için kontrol ettim, ancak inode numarasından bahsedilmiyor. Yapmak rm inodenumberda işe yaramıyor.

Bunun komutu nedir?

Yanıtlar:


24

Diğer bazı yöntemler şunları içerir:

Özel karakterlerden kaçmak:

[~] $ rm \ "la \ *

find komutunu kullanın ve yalnızca geçerli dizinde arama yapın. Find komutu inode numaralarını arayabilir ve kullanışlı bir -deleteanahtara sahiptir:

[~] $ ls -i
7404301 "la *

[~] $ bul. -maxdepth 1 tipi f -inum 7404301
./"la*

[~] $ bul. -maxdepth 1-tipi f -inum 7404301 -derin
[~] $ ls -i
[~] $

Heh, find'i kullanmak benim önerimden daha kolay olurdu, hiç fark etmemiştim -inum :)

Bulmak keşfedilecek çok sayıda harika anahtar var, bu benim dürüst olmak gerekirse benim İsviçre çakısı aracı :)
John T

t: oh çok doğru.
akira

Solaris, "-maksuppth" seçeneklerinin "-delete" değerine sahip değildir.
guthrie

-xdevDiğer bağlı dosya sistemlerinde aynı inode numarasına sahip ilgisiz dosyalar da olabileceğinden aramayı seçenekle sınırlamalısınız .
Jonas Berlin

5

Belki bir şey eksik ama ...

rm '"la*'

Her neyse, dosya adlarında düğüm yok, dosyalar var. Dosyayı işaret eden tüm dosya adlarını kaldırmadan kaldırmaya çalışmak dosya sisteminize zarar verir.


iyi, bu sadece geçerli dizin için işe yarar, ama gerçekten endişe için geçerli bir neden. Bunu özlediğim aptalca. Yine de dosyayı kaldırmıyor.
KdgDev

3
Tabii ki değil. Dosya yalnızca kendisine işaret eden dosya adı olmadığında ve açık tutan hiçbir işlem olmadığında kaldırılır.
Ignacio Vazquez-Abrams

5

Bunu gerçekten yapmak istiyorsanız - ve kullanım durumunuz gerçekten ihtiyacınız olduğu gibi görünmüyorsa, dosya sistemi hata ayıklama araçlarını deneyebilirsiniz. Eğer her şeyi kaybetmeye istekliyseniz, öyle.

Örneğin, ext2 / debugfs3/4 için komutun bir inode almış gibi görünen bir "kill_file" seçeneği vardır. Diğer tepkiler de belirtildiği gibi, bu olacak varolmayan dosyayı işaret dizini girişleri olacak şekilde, dosya sistemine zarar. fsckDaha sonra koşmak bunu onarabilir. Bağlı bir dosya sisteminde bunu yapmanız pek olası değildir.

Ama ediyorum şiddetle tavsiye sadece düzenli ile bu tür dosyaları / uygun kaçışa kullanmak alıntı ve silme rmönceki bir tepki olarak belirtildiği gibi komuta - ve kullanım rm -idosya adları gibi karakterler globbing içeren uğraşırken ekstra güvenlik için *


1

"Özel karakterlerden kaç" yaklaşımını şiddetle tavsiye etsem de, clridüzeltilebilir dosya sistemi bozulmasını istediğinizde her zaman komut vardır .


2
clriGenellikle yalnızca Oracle sistemlerinde (örneğin SunOS) mevcut olduğu unutulmamalıdır .
can-ned_food


1

Karşılaştığım zorluk, kısa çizgi ile başlayan bir dosya adını kaldırmaktı ve bunu her zaman bir ana bilgisayar adı olarak yorumlamak istiyor. Bunu kullanarak çözdüm:

rm ./-g4xxx
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.