Wie entferne ich alle Unterverzeichnisse? (Unix-Shell-Scripting)
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
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.
Verwenden Sie -mindepth 1
Option:
find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;