¿Ordenar la salida de grep por tamaño de archivo? (intento)

¿Ordenar la salida de grep por tamaño de archivo? (intento)

Quiero buscar una determinada cadena, en un determinado directorio. Luego quiero ordenar los archivos por tamaño (la cantidad de bytes estaría bien). Los archivos son archivos .php, aunque no creo que otros archivos que no sean php tengan la cadena que estoy buscando. ¿Cómo hago esto?

Tengo la parte grep:

grep -rl "foostring" ~/myfolder

Respuesta1

Archivos en orden de tamaño decreciente:

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
}

Admite cualquier ruta mediante el escape del shell de la salida.

Requisitos previos: GNU sed/ grep, Bash 4.

información relacionada