PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "find" und "grep" aber wie



Flatbury12
21.04.06, 01:10
Hallo,

ich sitze schon den ganzen Abend an einer bestimmten "grep-Commandozeile"

Ich würde gerne die Anzahl der Dateien eines Verzeichnisses anzeigen lassen um sie dann später in eine Datei zu speichern.

find /home/bla | grep -cE *\.[[:alnum:]]{3}

soweit gehts....aber jetzt würde ich noch zusätzlich manche Dateiendungen (zb. *.gz und *.tar) ausschliessen aus der Zählung.

kann mir evtl jemand helfen?

Vielen Dank

suck
21.04.06, 01:41
Ich würde gerne die Anzahl der Dateien eines Verzeichnisses anzeigen lassen um sie dann später in eine Datei zu speichern.Der Aufruf
find /home/bla | grep -c "/" reicht um dies zu zu bewerkstelligen (...ist wie dein Beispiel - das ja scheinbar schon passabel funktioniert - aber auch rekursiv und beinhaltet ebenfalls auch Verzeichnisse und nicht nur Dateien im eigentlichem Sinne - das letztere kann man mit "find"'s "-type f" Option umgehen, das erstere mit einer anderen Option). Um bestimmte Dateien auszuschliessen würde ich "find" statt "grep" nutzen (es geht aber auch mit "grep"). "find" bietet Operatoren wie "-and", "-or" und jeweils noch eine Negation, welche mit "-not" definiert wird. Um via "find" alle "*.gz" Dateien rauszufiltern, könnte dein Aufruf z.B. auf folgendem "find" besieren:
find /home/bla -name "*" -and -not -name "*.gz"

suck
21.04.06, 01:52
EDIT: Noch nen Beispiel (Anzahl aller normale Dateien unterhalb von /home/bla - "*.gz" und "*.tar" werden nicht mitgezählt):
find /home/bla -name "*" -and -not -name "*.gz" -and -not -name "*.tar" -and -type f | grep -c "/"

MiGo
21.04.06, 09:34
Nur die Dateien eines Verzeichnisses?
ls Verzeichnis |grep -v "tar.gz" |grep -v ".gz" > Dateiliste.txt :)