Bir dizindeki her şeyi nasıl silebilirim?


25

Gizli dosyalar ve dizinler dahil bir dizindeki her şeyi nasıl silebilirim?

Şu anda, aşağıdakileri kullanıyorum:

rm -rf *
rm -rf .*

5
Onları birleştirebilirsiniz rm -rf .* *.
kullanıcı bilinmeyen,

2
Bir dizine gidip sonra koşabilirsinrm -rf yourdirectory/*
shreyansp

1
Üzgünüm gizli dizin bölümünü kaçırdım. Önceki kullanıcı çözümü
şunları

Gönderdiğiniz ikinci seçenek çok tehlikelidir. Yukarıdaki.. dizinde bulunanları silecek olan dizinle eşleşecektir .
Richard Peterson

Yanıtlar:


17

Basit ve yalındır:

find -delete 

Dizinler ve gizli dosyalar içerir. En azından gnu-bul bilir -delete, findfarklı olabilir.


1
Dizini silmekten kaçınmak için, kullanın find /path -delete -mindepth 1.
orodbhen

@ orodbhen: find -delete komutu başlattığınız dizini silmez (rm ile ilgili soruda olduğu gibi).
kullanıcı bilinmeyen

11

En iyi cevap şudur: Yapma bunu. Tekrar tekrar dizinin kendisini kaldırın, ardından boş bir dizin olarak yeniden oluşturun. Başkalarının ne yapmaya çalıştığını anlaması daha güvenilir ve kolaydır. Dizini yeniden oluşturduğunuzda farklı bir sahibi, grubu ve izinleri olabilir. Bunlar önemliyse dikkatli olun. Ayrıca, çalışan programların dizinde açık dosya tanıtıcıları (tanımlayıcılar) varsa, kaldırmak istemezsiniz. Bu özel durumlardan hiçbiri geçerli değilse, dizinin tamamını kaldırmak daha kolaydır.


7
Peki bu nasıl daha kolay. 'Dikkatli olun' bir cevap değildir. Birisinin neden bir dizini sildiğini ve yeniden oluşturduğunu anlayamıyorum.
kullanıcı bilinmeyen

"Boş bir dizin olarak" ifadesini ekledim, belki de daha net.
Chris Quenelle

2
Hayır, bir dizini neden silip açıkladığınızı açıklamıyor. Göz önünde bulundurulması gerekenler aittir, btw., Yaratılışın tarihi / saati.
kullanıcı bilinmeyen

2
Bu dizin bazı işlemlerin geçerli çalışma dizini ise, sorunla karşılaşabilirsiniz. Ayrıca, dizini kaldırırsanız, izinleri ve sahipliği ile ilgili bilgileri kaldırırsınız.

8
rm -rf -- * .[!.]* ..?*

Üç örüntüden her biri, eğer hiçbir şeyle eşleşmezse kendi kendine genişler, ancak burada her şeyle eşleşmek istediğimiz ve rm -fvarolmayan argümanları göz ardı ettiğimiz için sorun değil .

Not .*eşleşir.. .


5

Bash 4+ varsayımı:

shopt -s dotglob
rm -rf -- *
##or:
rm -rf ./*

Dotglob etkinken, *tüm dosyaları ve dizinleri ile başlaması bile bu şekilde genişler .ama - değil genişletmek .ve ..bunun ile birlikte kullanmak güvenlidir yüzden rm.


2

dizinde iseniz:

cd .. && rm -rf dir && mkdir dir && cd dir

aksi takdirde:

rm -rf /path/to/dir && mkdir /path/to/dir


2

Ah benim Zsh

rm -rf (.|)*

Yine, bu sadece Zsh içindir.


2
Veya *(D)( Dglob niteleyicisi glob_dotsbu düzen için seçeneği açar ).
Gilles 'SO- kötülük' dur '28

Veya rm -rf {.,}*(Bash aksine zsh içermez .ve ..içine {.,}*en az benim makinede).
sasha

1

Nasıl kullanılacağı hakkında find. Bence bu genellikle iyi bir seçimdir, alt dizinleri araştırmanız gerekir.

find . -type f -exec rm {} \;

1
Orada bir -delete anahtarı, böylece dizinleri silebilirsiniz. (en azından gnu-bul).
kullanıcı bilinmeyen

bu alt dizinleri silmez
sasha

-2

Dene rm -rf *?*. Bu normal ve gizli dosyaları silecektir.


4
Bildiğim hiçbir kabuklu değil.
Gilles 'SO- kötülük'

haklısın. alt dizinleri silmez.
gladimdim

4
Sorunun *?*“nokta” dosyalar / dirs ile eşleşmeyecek olması daha olasıdır ( bash seçeneğini, zsh içindeki seçeneği veya kullandığınız kabuk için bir eşdeğeri dotglobseçeneğini belirtmediyseniz ). GLOB_DOTS
Chris Johnsen,
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.