Quero usar o grep para uma determinada string, em um determinado diretório. Então quero classificar os arquivos por tamanho (o número de bytes seria suficiente). Os arquivos são arquivos .php, embora eu não ache que outros arquivos não-php tenham a string que estou procurando. Como eu faço isso?
Eu peguei a parte do grep:
grep -rl "foostring" ~/myfolder
Responder1
Arquivos em ordem decrescente de tamanho:
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
}
Suporta qualquer caminho escapando do shell da saída.
Pré-requisitos: GNU sed
/ grep
, Bash 4.