Linux Bash - Find Ausgabe an Expr übergeben
Ich habe ein kleines Problem in der Shell. Ich möchte die Ausgabe von 'find /' an den Befehl 'expr length' übergeben.
Linux auf einem Qnap 219P, Zugriff per ssh.
Ich möchte gerne feststellen, ob ich Dateinamen auf meinem System habe, die länger als z.B. 240 Zeichen sind. Ich meine das müsste mit einer Zeile in der Shell unter Linux funktionieren.
Der Befehl
listet alle Dateinamen inkl. Pfade auf. Der Befehl gibt die Länge 10 aus.
Wenn beide Befehle verknüpft wären hatte man schon eine Liste der Längen der Dateinamen.
Die Verknüpfung der Befehle müsste meiner Meinung nach so aussehen:
Leider funktioniert das so nicht. Weiß jemand warum?
Google erschlägt mich mit Erklärungen, aber ich finde den Haken nicht.
Danke für einen Tipp.
Linux auf einem Qnap 219P, Zugriff per ssh.
Ich möchte gerne feststellen, ob ich Dateinamen auf meinem System habe, die länger als z.B. 240 Zeichen sind. Ich meine das müsste mit einer Zeile in der Shell unter Linux funktionieren.
Der Befehl
find /
expr length "Hallo Welt"
Wenn beide Befehle verknüpft wären hatte man schon eine Liste der Längen der Dateinamen.
Die Verknüpfung der Befehle müsste meiner Meinung nach so aussehen:
find / | expr length
Google erschlägt mich mit Erklärungen, aber ich finde den Haken nicht.
Danke für einen Tipp.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131676
Url: https://administrator.de/contentid/131676
Ausgedruckt am: 05.11.2024 um 15:11 Uhr
7 Kommentare
Neuester Kommentar
"Hallo Welt" ist ein String, das Ergebnis von find / ist aber eine *Liste* von Strings.
Du kannst "find" die einzelnen Dateinamen an "Expr" übergeben lassen:
Gib das so in der shell ein, dann erhältst du Datei- und Ordnernamen und deren Länge auf der folgenden Zeile. Beachte den "\" vor dem Semikolon. In {} setzt find das Argument, siehe man 1 find.
Wenn du nur Dateien prüfen willst, musst du "-type f" ergänzen.
Du kannst "find" die einzelnen Dateinamen an "Expr" übergeben lassen:
tuxbox:~ # find / -print -exec expr length {} \;
Gib das so in der shell ein, dann erhältst du Datei- und Ordnernamen und deren Länge auf der folgenden Zeile. Beachte den "\" vor dem Semikolon. In {} setzt find das Argument, siehe man 1 find.
Wenn du nur Dateien prüfen willst, musst du "-type f" ergänzen.
tuxbox:~ # find / -type f -print -exec expr length {} \;
Dann ist "find" in deiner BusyBox unvollständig implementiert. Dann musst du also einen anderen Weg gehen, z.B. über ein Shell-Script.
#!/bin/sh
find / > dateiliste.txt
while read DATEINAME ; do
echo "$(expr length $DATEINAME) $DATEINAME" >> dateiliste2.txt
done < dateiliste.txt
sort -n dateiliste2.txt > dateiliste.txt
rm dateiliste2.txt
cat dateiliste.txt
Hallo,
probier doch mal
sollte klappen.
MfG
probier doch mal
find ./ | xargs -I "{}" expr length {}
sollte klappen.
MfG