Comando para encontrar comprimentos de arquivo / caminho que são muito longos para gravar em DVD?

6

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
    
por Highly Irregular 14.01.2013 / 02:24

2 respostas

13

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.)

    
por 14.01.2013 / 02:38
6

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.

    
por 14.01.2013 / 02:24