Wie entferne ich alle Unterverzeichnisse? (Unix-Shell-Scripting)

Jan 15 2021

Ich habe ein Verzeichnis namens "cdrs-roaming". Jeden Tag erhalte ich eine oder mehrere ZIP-Dateien und entpacke sie damit:

#!/bin/bash
for i in *.zip
do
    j=${i//\.zip/} mkdir $j
    cd $j unzip ../$i
    cd -
done 

Dann habe ich zum Beispiel: "example1.zip" und "example1"; "example2.zip" und "example2"

Ich entferne alle Zip-Dateien (in diesem Fall: "example1.zip" und "example2.zip") damit:

#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;

Also möchte ich die Verzeichnisse (oder Ordner - ich kenne den Unterschied wirklich nicht) "example1" und "example2" entfernen. Ich habe das versucht:

#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

Es wird aber auch "cdrs-roaming" entfernt. Ich habe auch versucht zu verwenden:

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

Aber es gibt zurück: find: '/ cdrs-roaming /': Keine solche Datei oder kein solches Verzeichnis

Irgendeine Idee dafür? Ich muss nur die Verzeichnisse in "cdrs-roaming" löschen, kann aber nichts anderes darin entfernen (meine .sh-Dateien befinden sich darin).

Antworten

2 user1934428 Jan 15 2021 at 15:17

Wie wäre es, wenn Sie bash verwenden?

rm -rf /dados/cdrs-roaming/*/

Der letzte Schrägstrich stellt sicher, dass bash das Muster nur auf Verzeichnisse erweitert.

1 TimurShtatland Jan 15 2021 at 05:27

Verwenden Sie -mindepth 1Option:

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