Tüm alt dizinler nasıl kaldırılır? (unix kabuk komut dosyası)

Jan 15 2021

"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

2 user1934428 Jan 15 2021 at 15:17

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.

1 TimurShtatland Jan 15 2021 at 05:27

-mindepth 1Seçeneği kullan :

find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;