Reihner schrieb:
Ich suche eine Möglichkeit alle Dateinamen nach einer Zeichenkombination zu durchsuchen und alle Funde in eine Datei auszugeben.
Das lässt sich z.B. mit grep bewerkstelligen - das durchsucht rekursiv den angegebenen Ordner und schreibt die Ausgabe in eine Datei treffer.txt:
grep -R 720 /pfad/zum/Ordner/ > treffer.txt
Das schreibt für jede Fundstelle die Datei und die Zeile mit dem Treffer in eine Datei.
Edit: wenn du die Dateinamen selber durchsuchen willst, kannst du die mit find suchen:
find /pfad/zum/Ordner/ -type f | grep 720 > funde.txt
2. Des weiteren sollen die Funde nach Häufigkeit mit Anhang, egal ob davor, dahinter oder einzeln, sortiert werden. z.B. ich suche alles mit "720" dann soll angegeben werden 25 Funde mit 12720, 18 Funde mit 72000 und 3 Funde mit 123720789 und 1 Fund mit 720.
Da könnte man das Suchmuster erweitern und die Ausgabe einschränken - der Schalter -h
sorgt dafür, dass der Dateiname weggelassen wird, der Schalter -P
aktiviert PCRE für die regulären Ausdrücke und -o
sorgt dafür, dass nur der Text, der auf den Suchausdruck genau passt ausgegeben wird (statt der ganzen Zeile):
grep -h -P -R -o '\d*720\d*' /pfad/zum/Ordner/ > treffer.txt
Jetzt kann man sort nutzen, um die Einträge numerisch zu sortieren und uniq, um sie zu zählen:
grep -h -P -R -o '\d*720\d*' /pfad/zum/Ordner/ | sort -n | uniq -c > anzahl.txt
Für eine Beispieldatei mit diesem Inhalt:
720
123720789
720
72000
12720
12720
72000
12720
72000
72000
72000
72000
72000
123720789
123720789
123720789
Ergibt das z.B. so eine Ausgabe:
2 720
3 12720
7 72000
4 123720789
Was man natürlich noch mal nach Häufigkeit sortieren könnte:
$ grep -h -P -R -o '\d*720\d*' /pfad/zum/Ordner/ | sort -n | uniq -c | sort -n
2 720
3 12720
4 123720789
7 72000
Edit: das gleiche für Dateinamen:
find /pfad/zum/Ordner/ -type f | grep -h -P -R -o '\d*720\d*' | sort -n | uniq -c | sort -n
3. Umbenennen mit Variablen: wenn ich Angaben wie "1.7" in der Datei habe soll dieses in "0001.0007" umbenannt werden wobei die eigentliche Zahl (1.7) erkannt und eingepflegt wird sodass automatisch auch aus "7.9" zu "0007.0009" und "13.128" zu "0013.0128" wird.
Wenn ich das richtig verstehe, willst du ein Padding auf vier Stellen, also alle natürliche Zahlen mit führenden Nullen schreiben, so dass sie mindestens 4 Zeichen breit sind?