Com o GNU find (no Linux ou no Cygwin), você pode procurar por arquivos cujo caminho relativo tenha mais de 255 caracteres:
find -regextype posix-extended -regex '.{257,}'
(257 contas para o ./
inicial.)
Estou tentando gravar um DVD do Windows, mas ele falha porque o comprimento do nome do caminho completo excede o limite de algo como 255 caracteres.
Nossos arquivos são armazenados no Debian Linux (acessado pelo Windows usando samba), portanto, para evitar a execução de algum aplicativo do Windows para encontrar nomes de caminho longos, prefiro encontrá-los usando um comando do Linux.
Qual comando eu poderia executar para exibir uma lista do caminho relativo e nomes de arquivos para uma determinada pasta, classificados pelo comprimento de cada um (em ordem decrescente)?
A saída deve ser algo como isto:
92 ./site/testapidocs/wjhk/jupload2/policies/class-use/DefaultUploadPolicy_WithoutAlertBox.ht
83 ./site/testapidocs/wjhk/jupload2/upload/class-use/PacketConstructionThreadTest.html
76 ./site/apidocs/wjhk/jupload2/upload/helper/class-use/ProgressBarManager.html
52 ./site/xref/wjhk/jupload2/gui/JUploadFileFilter.html
31 ./site/samples.java/applet.jnlp
17 ./site/index.html
Eu encontrei 2 maneiras de fazer isso:
find . | perl -pe 'print (length($_)-1)." ";' | sort -rn | less
find . | awk '{print length,$0}' | sort -rn | less
Minha primeira tentativa ( encontrar. | perl -pe 'print length;' | sort -rn | less ) no comando usando perl relatou uma contagem de caracteres muito alta em um, como eu acho inclui um caractere de nova linha em sua contagem? Provavelmente, isso pode ser feito de maneira mais clara do que o meu método acima, mas obtive o resultado de que precisava.
Tags find text-processing filenames