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.