Isso é escrito no Bash e usa recursos específicos para ele (mas recursos similares estão disponíveis em outros shells). Ele foi projetado para ser executado a partir de um diretório pai comum a todos os arquivos e diretórios nos quais você está interessado. Ele leva em consideração o comprimento do caminho de /
até lá e o adiciona ao comprimento de cada caminho avaliado. Se você não quiser fazer isso, use lenpwd=0
em vez de lenpwd=${#PWD}
. Ele funcionará se houver arquivos com espaços em seus nomes, mas não aqueles que tenham novas linhas (que devem ser banidas de qualquer forma). Imprime os comprimentos e filespec de qualquer coisa que atenda aos critérios.
lenpwd=${#PWD}; find | while read -r path; do file=${path##*/}; if (( ${#path} + lenpwd > 1024 || ${#file} > 256 )); then echo "$((${#path} + lenpwd)) ${#file} $path"; fi; done