FHEM Forum

Verschiedenes => Off-Topic => Thema gestartet von: Bartimaus am 25 Dezember 2024, 00:13:02

Titel: Zählen mit "grep"
Beitrag von: Bartimaus am 25 Dezember 2024, 00:13:02
Servus und frohe Weihnachten allerseits,

ich bräuchte mal Eure Hilfe, weil ich mit Regex auf Kriegsfuss stehe.

Ich habe auf einem Linuxserver z.B. ein Oberverzeichnis mit vielen Unterverzeichnissen:

/Photos/Urlaub_2000
       /Urlaub_2001
        Urlaub_2002

usw.
Wie kann ich mit jetzt mit "grep" oder "Find" o.ä.
eine Zählung je Verzeichnis mit Ausgabe in einer Datei machen ?

Also:
Urlaub_2000 = 254 Dateien
Urlaub_2001 = 544
Urlaub_2002 = 280

grep -c -r *.jpg /Photos/ >> Urlaub.txt
Führt leider nicht zum Erfolg. Darin werden alle gefundenen Dateien aufgelistet, obwohl nach meinem Verständnis der Parameter "-c" den Befehl zum zählen gibt

auch
find /Photos/ -type f | wc -l >> Urlaub2.txt
führt zum gleichen Ergebnis wie der Befehl mit "grep".
Ach ja, in den Zielverzeichnissen sind nur symbolische Links zu Dateien (Quelle liegt woanders)
 
Titel: Aw: Zählen mit "grep"
Beitrag von: Otto123 am 25 Dezember 2024, 00:42:20
Zitat von: Bartimaus am 25 Dezember 2024, 00:13:02obwohl nach meinem Verständnis der Parameter "-c" den Befehl zum zählen gibt
Zitat-c, --count  nur die Anzahl der passenden Zeilen pro DATEI ausgeben
Da müsstest Du erst die Datei mit der Liste der Bilder erzeugen.
Sowas funktioniert eventuell, die Ausgabe kannst Du ja formatieren
for d in /photos/*/;do echo "$d $(find $d -name *.jpg|wc -l)";done
Schöne Weihnachten
Otto
Titel: Aw: Zählen mit "grep"
Beitrag von: betateilchen am 25 Dezember 2024, 13:18:42
for x in /opt/fhem/*/;do echo "$x $(find $x -maxdepth 1 -type f|wc -l)";done

ergibt:

/opt/fhem/contrib/ 99
/opt/fhem/demolog/ 10
/opt/fhem/docs/ 48
/opt/fhem/FHEM/ 615
/opt/fhem/lib/ 0
/opt/fhem/log/ 6
/opt/fhem/restoreDir/ 0
/opt/fhem/sqldb/ 6
/opt/fhem/t/ 1
/opt/fhem/thirdparty/ 1
/opt/fhem/webfrontend/ 0
/opt/fhem/www/ 0


Allerdings habe ich jetzt nicht getestet, ob mit "-type f" auch symbolische Links gezählt werden oder nur echte Dateien.
Titel: Aw: Zählen mit "grep"
Beitrag von: betateilchen am 25 Dezember 2024, 13:32:36
Zitat von: betateilchen am 25 Dezember 2024, 13:18:42Allerdings habe ich jetzt nicht getestet, ob mit "-type f" auch symbolische Links gezählt werden oder nur echte Dateien.

Also wenn

Zitat von: Bartimaus am 25 Dezember 2024, 00:13:02in den Zielverzeichnissen sind nur symbolische Links zu Dateien

es tatsächlich so ist, dass NUR symbolische Links in den Verzeichnissen vorhanden sind, kannst Du statt "-type f" einfach "-type l" verwenden.
Titel: Aw: Zählen mit "grep"
Beitrag von: Bartimaus am 25 Dezember 2024, 13:42:32
Zitat von: betateilchen am 25 Dezember 2024, 13:18:42for x in /opt/fhem/*/;do echo "$x $(find $x -maxdepth 1 -type f|wc -l)";done

ergibt:

/opt/fhem/contrib/ 99
/opt/fhem/demolog/ 10
/opt/fhem/docs/ 48
/opt/fhem/FHEM/ 615
/opt/fhem/lib/ 0
/opt/fhem/log/ 6
/opt/fhem/restoreDir/ 0
/opt/fhem/sqldb/ 6
/opt/fhem/t/ 1
/opt/fhem/thirdparty/ 1
/opt/fhem/webfrontend/ 0
/opt/fhem/www/ 0

  • die Namen von Unterverzeichnissen werden nicht mitgezählt (-type f)
  • es wird nicht rekursiv durch weitere Unterverzeichnisse gesucht (-maxdepth 1)
  • die Dateiendung der Bilddateien ist egal

Allerdings habe ich jetzt nicht getestet, ob mit "-type f" auch symbolische Links gezählt werden oder nur echte Dateien.

Perfekt, danke !

for x in /opt/fhem/*/;do echo "$x $(find $x -maxdepth 1 -type f|wc -l)";done >> Urlaube.txt
liefert das gewünschte Ergebnis (auch mit symbolischen Links). Da wär ich im Leben nicht drauf gekommen

Titel: Aw: Zählen mit "grep"
Beitrag von: Bartimaus am 03 Januar 2025, 11:58:24
Moin,

ein erfüllter Wunsch weckt einen neuen.

Bislang habe die die Anzahl der Dateien in einem Verzeichnis verwendet, um daraus händisch "persönliche Best-of" Listen zu generieren. (Excel)

Was ich möchte:
Ich habe z.B. 100 Ordner mit persönlichen Lieblingsstuecken.mp3 eines Interpreten/Band whatever.

Jetzt möchte ich die Gesamtanzahl der *.mp3 ermitteln um daraus einen Mittelwert (Anzahl) zu errechnen.
Diese gemittelten "Stücke" möchte ich zufallsbasiert in diverse Ordner kopieren (symbolischer Link). Die Anzahl der Stücke pro Ordner soll z.B. 100 nicht überschreiten. Die Anzahl der Ordner erfolgt dabei dynamisch, da auch die Quellordner mit der zeit wachsen.
So erhalte ich diverse Ordner wo jetzt nicht 50 Stücke von Interpret "A" drin sind, sondern wild gemischt.

Habt Ihr ne Idee, wie man sowas "automatisch" berechnen/erstellen kann ?
Titel: Aw: Zählen mit "grep"
Beitrag von: betateilchen am 03 Januar 2025, 13:38:07
Dafür gibt es doch fertige Lösungen, die perfekt funktionieren.

Google mal nach "software shuffle playlist erzeugen"
Titel: Aw: Zählen mit "grep"
Beitrag von: Bartimaus am 03 Januar 2025, 13:52:33
Sowas gibts ? Cool, danke. Schaue ich mal.