Başka bir cevabın işaret ettiği gibi , isimleri olan tüm dizinleri bulmayı deneyebilir test
ve silebilirsiniz.
find -name "test" -type d -delete
Mac'te çapraz uyumlulukla ilgili bazı sorunlarla karşılaştım, bu yüzden bu eşdeğer komutu kullandım:
find -path "*/test" -type d -delete
- -path : tam olarak nitelenmiş dosya adında bir kalıp arar.
Bununla birlikte, her iki durumda da, adlandırılmış dizinlerden herhangi birinin içinde test
dosya varsa , dizinin kaldırılmasından find
şikayetçi Directory is not empty
olur ve dizini kaldıramaz.
Dizin dahil tüm dosyaları silmek isterseniz test
, o zaman test
ilk adı verilen dizinlerin içindeki tüm dosyaları silmek için aynı numarayı kullanabiliriz .
find -path "*/test/*" -delete
Pattern:, "*/test/*"
yalnızca adlandırılmış bir dizindeki dosyaları silmemizi sağlayacaktır /test/
. Dizinler boşalınca, ilk komutu kullanarak devam edip dizinleri silebiliriz:
find -path "*/test" -type d -delete
Örnek:
$ tree
.
├── mytest
│ └── test
│ └── blah.txt
├── test
│ ├── bar.jpg
│ └── dir
│ └── bar.bak
└── testdir
└── baz.c
5 directories, 4 files
$ find -path "*/test" -type d -delete
$ tree
.
├── mytest
│ └── test
├── test
└── testdir
└── baz.c
4 directories, 1 file
$ find -name "test" -type d -delete
$ tree
.
├── mytest
└── testdir
└── baz.c
2 directories, 1 file
+
bulmak. Hiçbir fikrim yoktu, kesinlikle çok uzun zaman önce bilseydim diledi.