Rekursiv zählen bestimmte Dateien BASH
Mein Ziel ist es, ein Skript zu schreiben, das rekursiv durchsuchen Sie die aktuellen Arbeitsverzeichnis und der sub dirctories und drucken Sie die Anzahl der gewöhnliche Dateien, die Anzahl der Verzeichnisse, Anzahl der blockorientierten Dateien, Graf von Charakter spezielle Dateien,Anzahl der FIFOs, und eine Anzahl von symbolischen links. Ich muss mit Bedingung testet mit [[ ]]. Problem ist, ich bin nicht ganz sicher, wie Sie beginnen sogar.
Habe ich versucht, das so etwas wie die folgenden, um die Suche für alle normalen Dateien, aber ich bin mir nicht sicher, wie die Rekursion genau das funktioniert in BASH-scripting:
function searchFiles(){
if [[ -f /* ]]; then
return 1
fi
}
searchFiles
echo "Number of ordinary files $?"
aber ich bekomme 0 als Ergebnis. Jemand helfen zu diesem?
- wo uns der rekursive Aufruf? und warum Rekursion. Beachten Sie, dass Sie in der Lage wäre, um nur ein max Wert von 255 als Rückgabe-Wert ist begrenzt durch 1 byte (8-bit byte).
- haben Sie einen Blick auf
pushd
undpopd
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum würden Sie nicht verwenden
find
?Etwas für den Einstieg:
Nicht zu einer Rekursion hier aber doch, dass Sie könnten, resort
ls -lR
oder ähnlich, aber dann wieder, wenn Sie verwenden ein externes Programm, sollten Sie resort mitfind
, das ist, was es ist entworfen, um zu tun.*
verwenden**
für Rekursion.shopt globstar
ist auf für diese zu arbeiten. (shopt -s globstar
zu aktivieren)