Jak usunąć wszystkie podkatalogi? (skrypty powłoki unixowej)
Mam katalog o nazwie „cdrs-roaming”. Codziennie otrzymuję jeden lub więcej plików .zip i rozpakowuję je za pomocą tego:
#!/bin/bash
for i in *.zip
do
j=${i//\.zip/} mkdir $j
cd $j unzip ../$i
cd -
done
Wtedy mam na przykład: „przyklad1.zip” i „przyklad1”; „example2.zip” i „example2”
Usuwam wszystkie pliki zip (w tym przypadku: „example1.zip” i „example2.zip”) w ten sposób:
#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;
Chcę więc usunąć katalogi (lub foldery - naprawdę nie znam różnicy) „przyklad1” i „przyklad2”. Próbowałem tego:
#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
Ale usuwa również "roaming cdrs". Próbowałem też użyć:
find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
Ale zwraca: find: „/ cdrs-roaming /”: Brak takiego pliku lub katalogu
Masz jakiś pomysł na zrobienie tego? Muszę usunąć tylko katalogi z „cdrs-roaming”, ale nie mogę usunąć niczego innego z niego (moje pliki .sh są w nim)
Odpowiedzi
Skoro używasz basha, co powiesz na to
rm -rf /dados/cdrs-roaming/*/
Ostatni ukośnik zapewnia, że bash rozszerza wzorzec tylko do katalogów.
Użyj -mindepth 1
opcji:
find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;