Bash Skript mehrere Unterordner auf Inhalt überprüfen?
Hallo !
Ich benötige ein Bash Skript, mit dem ich mehrere Unterordner auf Inhalt überprüfen kann. Wenn in einem dieser Ordner noch eine Datei liegt, soll eine Fehlermeldung kommen z.B. echo 'Eine Datei vorhanden', sollte aber in keinem dieser Ordner eine Datei liegen, soll auch nur eine Information kommen, z.B. echo 'Alle Ordner sind leer'
Bsp:
-- Überordner --- Unterodner 1 - Inhalt: test.pdf --- Unterordner 2 - Inhalt: leer --- Unterordner 3 - Inhalt: test1.pdf
Ich hoffe einer der Programmierer kann mir helfen :)
Beste Grüße, N4noBot
3 Antworten
Dieses Skript hier macht, was du willst:
#!/bin/bash
start_dir='/opt/dymo'
all_dirs=`find "$start_dir" -maxdepth 1 -type d`
for my_dir in $all_dirs; do
all_files=`find "$my_dir" -maxdepth 1 -type f`
if [ "$all_files" = "" ]; then
echo "$my_dir"
fi
done
Aus deiner Frage ist leider nicht ersichtlich, ob du nur eine Ebene von Unterverzeichnissen überprüfen willst, oder rekursiv alle darin Enthaltenen.
Falls du dir eine rekursive Suche wünschst, ändere einfach den ersten (NUR den ersten!) "maxdepth" Parameter von 1 auf eine höhere Zahl oder entferne den Parameter komplett.
Viel Spaß! :)
Anhaltspunkt (ist schon sooo lange her):
ls unterordner/* unterordner1/* unterordner2/* | wc
ergibt 0 oder die Anzahl der gefundenen Dateien, damit solltest Du weiter kommen
├── /
│ ├── /Unterodner 1/
│ │ └── /Unterodner 1/test.pdf
│ └── /Unterordner 2/
│ ├──
│ ├──
│ └──
├── /Unterordner 2/
├── /Unterordner 3/
│ └── /Unterordner 3/test1.pdf
├── /Unterordner 4/
│ └── /Unterordner 4/Unterordner 4a/
│ ├── test2.pdf
│ ├── test3.pdf
│ └── test4.pdf