Как найти и отсортировать каталог по самому длинному пути к файлу?

Я нахожусь на OS X, пытаясь подключиться к Microsoft OneDrive, у которого есть жесткий предел пути. Мне нужно найти самые длинные пути в каталоге.

  • Почему vim возвращает ненулевой код выхода, если я выйду сразу после открытия?
  • Как подключиться к файлу Windows?
  • Tmux и dim-ed цвета в Terminal.app на MacOS
  • arecord для mac?
  • Не удается просмотреть содержимое каталога приложений в терминале
  • awk и система, а также печать и добавление в файл csv
  • Использование curl приводит к ошибке: «Библиотека не загружена: /usr/local/lib/libcurl.4.dylib ...»
  • Генератор паролей не работает OS X
  • 2 Solutions collect form web for “Как найти и отсортировать каталог по самому длинному пути к файлу?”

    Следующая команда даст вам количество символов каждого регулярного файла (удалить -type f для всех типов файлов, включая каталоги) под каталогом, в котором вы его выполняете, и отсортировать их так, чтобы самые длинные были последними:

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

    Предполагается, что имена файлов и каталогов не содержат символов новой строки.

    Это самый длинный путь, который вы хотите, или самое длинное имя файла? Между foo/bar/baz и foobar , это foo/bar/baz (самый длинный путь) или foobar (имя длиннее baz )?

    С 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]) 

    Обратите внимание, что он подсчитывает эти длины в количестве символов, а не в байтах. Вы можете изменить языковой стандарт на C для подсчета в байтах, но тогда мы не знаем, как имена файлов закодированы на удаленном хосте, и что соответствует этому пределу, о котором вы говорите. Например, € кодируется в один байт в iso8859-15, два в UTF-16 и три в UTF-8.

    Linux и Unix - лучшая ОС в мире.