Como faço para encontrar e classificar um diretório pelo caminho de arquivo mais longo?

1

Estou no OS X, tentando conectar o Microsoft OneDrive, que tem um limite de caminho físico. Eu preciso encontrar os caminhos mais longos em um diretório.

    
por joseph.hainline 02.12.2016 / 22:34

2 respostas

2

O seguinte comando lhe dará a contagem de caracteres de todos os arquivos regulares (remova o -type f para todos os tipos de arquivos, incluindo diretórios) abaixo do diretório em que você os executa e classifique-os para que os mais longos sejam exibidos por último: / p>

find . -type f -print|awk '{print length($0), $0}' | sort -n

Ele supõe que os nomes de arquivos e diretórios não contêm caracteres de nova linha.

    
por 02.12.2016 / 22:34
1

É o caminho mais longo que você deseja ou o nome de arquivo mais longo? Entre foo/bar/baz e foobar , é foo/bar/baz (caminho mais longo) ou foobar (nome maior que baz )?

com zsh :

path_length() REPLY=$#REPLY
name_length() REPLY=${#REPLY:t}

# longest name:
ls -ld -- **/*(DnO+name_length[1])

# longest path:
ls -ld -- **/*(DnO+path_length[1])

Observe que ele conta esses comprimentos em número de caracteres, não bytes. Você pode alterar a localidade para C para contar em bytes, mas não sabemos como os nomes dos arquivos são codificados no host remoto e o que conta para o limite ao qual você está se referindo. Por exemplo, € é codificado em um byte em iso8859-15, dois em UTF-16 e três em UTF-8.

    
por 03.12.2016 / 08:09