Tüm alt dizinler nasıl kaldırılır? (unix kabuk komut dosyası)
"Cdrs-roaming" adında bir dizinim var. Her gün bir veya daha fazla .zip dosyası alıyorum ve bunları şununla açıyorum:
#!/bin/bash
for i in *.zip
do
j=${i//\.zip/} mkdir $j
cd $j unzip ../$i
cd -
done
Sonra örneğin: "example1.zip" ve "example1"; "example2.zip" ve "example2"
Tüm zip dosyalarını (bu durumda: "example1.zip" ve "example2.zip") bununla kaldırıyorum:
#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;
Bu yüzden "example1" ve "example2" dizinlerini (veya klasörleri - farkı gerçekten bilmiyorum) kaldırmak istiyorum. Bunu denedim:
#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
Ama aynı zamanda "cdrs-roaming" i de kaldırır. Ayrıca şunu kullanmayı denedim:
find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
Ancak şunu döndürür: find: '/ cdrs-roaming /': Böyle bir dosya veya dizin yok
Bunu yapmak için herhangi bir fikrin var mı? Yalnızca "cdrs-roaming" içindeki dizinleri silmem gerekiyor ancak içindeki başka hiçbir şeyi kaldıramıyorum (.sh dosyalarım onun içinde)
Yanıtlar
Bash kullandığınıza göre, peki ya
rm -rf /dados/cdrs-roaming/*/
Son eğik çizgi, bash'nin kalıbı yalnızca dizinlere genişletmesini sağlar.
-mindepth 1
Seçeneği kullan :
find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;