![Ausgabe von grep nach Dateigröße sortieren? (bash)](https://rvso.com/image/1618357/Ausgabe%20von%20grep%20nach%20Dateigr%C3%B6%C3%9Fe%20sortieren%3F%20(bash).png)
Ich möchte in einem bestimmten Verzeichnis nach einer bestimmten Zeichenfolge suchen. Dann möchte ich die Dateien nach Größe sortieren (Anzahl der Bytes wäre in Ordnung). Die Dateien sind .php-Dateien, obwohl ich nicht glaube, dass andere Nicht-PHP-Dateien die gesuchte Zeichenfolge enthalten würden. Wie mache ich das?
Ich habe den Grep-Teil:
grep -rl "foostring" ~/myfolder
Antwort1
Dateien in absteigender Reihenfolge:
matching_files_by_size() {
local matching_paths path
mapfile -d '' -t matching_paths < <(grep --files-with-matches --null --recursive "$@")
for path in "${matching_paths[@]}"
do
printf '%s\t%q\n' "$(du --bytes -- "$path" | cut --fields=1)" "$path"
done | sort --key=1 --numeric-sort --reverse | cut --fields=2
}
Unterstützt beliebige Pfade durch Shell-Escapen der Ausgabe.
Voraussetzungen: GNU sed
/ grep
, Bash 4.