Centos'taki bir dizinin içeriği nasıl silinir?


9

CentOS'ta bir klasörün tüm içeriğini silmem gerekiyor, ancak klasörün kendisini değil.

Örneğin: FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... vb alt klasörlerini ve bazı dosyaları içeren "MYFOLDER" adlı bir klasörüm var. Tüm bu klasörleri ve dosyaları silmem gerekiyor, ancak MYFOLDER kapsayıcı klasörünü değil. Önceki bir işlemin sonuçlarını yönlendirmek için bu dizine ihtiyacım var.

rm -rf Komutu denedim , ancak bu konteyner klasörünü de siliyor.

Yanıtlar:


11

Bunun yerine klasörün içeriğini silin.

rm -r MYFOLDER/*

1
Bunun MYFOLDER içindeki dosyaları / dizinleri gizlemediğini unutmayın
tylerl

1
@tylerl: İlk ayarladıysanız yapar shopt -s dotglob.
jgoldschrafe

Bu, her bir alt dizine inen y / n'yi manuel olarak onaylamanızı gerektirir, bu da tam bir zaman kaybıdır. Doğru komut, tüm bunları otomatik olarak gerçekleştirir, böylece 50 istemle sıkışmazsınız.
CodeMed

rm -R /path/to/myfolder/*her dosyanın ve alt klasörün silinmesini onaylamaya yönelik aşırı isteklerden kaçınmak için doğru sözdizimidir. Sermayeye dikkat edin R.
CodeMed

5

Kullanabilirsiniz:

rm -r MYFOLDER/{.[^.],.??*}

Bu, gizli dosya ve klasörleri de siler. MYFOLDER dizininde çok fazla dosyanız varsa, bunun yerine çalıştırmalısınız:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

meta/Dizinin içinde 500 binden fazla dosya var , bu yüzden xargs alternatifini denemek istedim, ancak bu hata mesajlarını alıyorum: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK

1
bashKabuk kullandığınızdan emin olun . Kabuk, dosya kalıpları için "Ayraç Genişletme" ve "Normal İfadeler" i desteklemelidir.
Mircea Vutcovici

3

En kolay yol, bence, kendisi de dahil olmak üzere tüm dizini silmek ve klasörü yeniden oluşturmaktır. Bunun iyi bir çözüm olmadığı durumlar vardır (katılımsız komut dosyaları veya daha karmaşık boru hatları), ancak klasörü neden silmek istemediğinizi belirtmediniz.

rm -rf foldername
mkdir foldername

Hata. Siz belirttiniz (yazınızı yeniden okudum). Yine de, silme ve yeniden oluşturma işe yarayabilir. Özellikle komutları birbirine zincirlerseniz,

rm -rf foldername && mkdir foldername

Veya

rm -rf foldername; mkdir foldername

Bazen üst klasörde izniniz olmayabilir veya farkında olmadığınız belirli nitelikleri korumak istersiniz. Örneğin, ana klasörünüzü kök olmayan kullanıcı olarak silemezsiniz, ancak altındaki herhangi bir şeyi kaldırabilirsiniz.
Mircea Vutcovici

Bu kabul edilen cevap olmalı. +1
CodeMed



0

Bu alternatifi şiddetle tavsiye ederim (ayrıca adlardaki boşlukları olan dosyaları da kaldırır):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
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.