Você não especifica se deseja também os arquivos em qualquer subdiretório de /group/book/four/word
. A solução find
na resposta de jherran irá descer em subdiretórios. Se isso não for desejado, use o shell:
for file in ./*; do [ -f "$file" ] && wc -l "$file"; done | sort -n
Se os nomes dos seus arquivos puderem conter novas linhas, você poderá usar algo como:
for file in ./*; do
[ -f "$file" ] &&
printf "%lu %sshopt -s globstar
for file in ./**/*; do [ -f "$file" ] && wc -l "$file"; done | sort -n
" "$(wc -l < "$file")" "$file"
done | sort -zn | tr 'for file in ./*; do [ -f "$file" ] && wc -l "$file"; done | sort -n
' '\n'
Por fim, se você fizer quiser descer em subdiretórios, poderá usar isso em bash
4 ou acima:
for file in ./*; do
[ -f "$file" ] &&
printf "%lu %sshopt -s globstar
for file in ./**/*; do [ -f "$file" ] && wc -l "$file"; done | sort -n
" "$(wc -l < "$file")" "$file"
done | sort -zn | tr '%pre%' '\n'
Observe que as versões de bash
anteriores a 4.3 estavam seguindo os links simbólicos ao descer de forma recursiva a árvore de diretórios (como zsh
's ou tcsh
' ***/*
).
Além disso, todas as soluções acima irão ignorar arquivos ocultos (aqueles cujo nome começa com .
, use shopt -s dotglob
para incluí-los) e também incluirão a contagem de linha de links simbólicos (que a abordagem find
não ).