Com o GNU find
:
find . -regextype posix-extended ! -regex '.{253,}' ! -type d
(que imprime um prefixo ./
que não está incluído na contagem 250).
com zsh
:
setopt extendedglob # if not already in your ~/.zshrc
printf '%s\n' **/*~?(#c251,)(D^/)
Isso é todos os caminhos recursivamente ( **/*
) incluindo os ocultos ( (D)
), mas não ( ^
) os do tipo diretório ( /
), exceto ( ~
) aqueles que correspondem a ?(#c251,)
, ou seja, que contêm 251 caracteres ou mais.
POSIXly:
find . ! -path "$(printf %253s | tr ' ' '?')*" ! -type d
(note que não há nada no Unix que garanta que os nomes dos arquivos sejam feitos de caracteres válidos. Exceto pelo zsh
one, essas soluções também podem reportar arquivos cujo caminho contenha seqüências de bytes que não formam caracteres válidos -path '*'
pode ajudar a excluí-los) Se você deseja corresponder ao número de bytes em oposição ao número de caracteres em sua localidade, você pode corrigir a localidade para C
com export LC_ALL=C
).