Tüm alt dizinlerde belirli bir ada sahip tüm dosyaları nasıl silebilirim?


25

Ana dizinin tüm alt dizinlerinde verilen bir isimle tüm dosyaları silmek istiyorum.

Denedim:

rm -r file

Giriş dizinimde, ancak bu dosya bu dizinde bulunmadığından çalışmadı.

Yanıtlar:



12

@ tante'nin cevabının bir detaylandırması olarak, bu dosyaları silmeden önce kullanılan dosya listesinin doğru olduğundan emin olmak isteyebilirsiniz:

find <source_dir> -name <filename> -print

eğer denetim geçerli bir liste gösteriyorsa

find <source_dir> -name <filename> -delete

geçici bir tutma dizini kullanarak birçok dizinde bunu istiyorsanız, başka bir seçenek:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

Her zaman olduğu gibi, yürütmeden önce tüm komut dosyalarının doğruluğunu sağlayın ve bir şeyler ters gittiğinde daima yedeklemeye hazır olun.


3
değişken değişkenlerin etrafına her zaman çift tırnak işareti koyun, aksi halde komutunuz belirli özel karakterleri (boşluk, joker karakterler ve ters eğik çizgiler) içeren dosya adlarıyla çalışmaz.
Gilles 'SO- kötülük' dur

@Gilles - Evet, bu cevabı güncellediğiniz ve sağladığınız için teşekkür ederiz.
Wayne
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.