Jak usunąć wszystkie podkatalogi? (skrypty powłoki unixowej)

Jan 15 2021

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

2 user1934428 Jan 15 2021 at 15:17

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.

1 TimurShtatland Jan 15 2021 at 05:27

Użyj -mindepth 1opcji:

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