가장 긴 파일 경로로 디렉토리를 찾고 정렬하는 방법은 무엇입니까?

가장 긴 파일 경로로 디렉토리를 찾고 정렬하는 방법은 무엇입니까?

OS X에서 Microsoft OneDrive에 연결하려고 하는데 경로 제한이 엄격합니다. 디렉토리에서 가장 긴 경로를 찾아야 합니다.

답변1

-type f다음 명령은 명령이 실행되는 디렉터리(디렉터리를 포함한 모든 유형의 파일 제거)에 있는 각 일반 파일의 문자 수를 제공 하고 가장 긴 파일이 마지막에 출력되도록 정렬합니다.

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

파일 및 디렉터리 이름에 개행 문자가 포함되어 있지 않다고 가정합니다.

답변2

가장 긴 경로를 원하시나요, 아니면 가장 긴 파일 이름을 원하시나요? foo/bar/baz와 사이에 (가장 긴 경로) foobar입니까 , 아니면 (이름이 보다 깁니다 )입니까?foo/bar/bazfoobarbaz

그리고 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에서 1바이트, UTF-16에서 2바이트, UTF-8에서 3바이트로 인코딩됩니다.

관련 정보