最も長いファイルパスでディレクトリを見つけてソートする方法は?

最も長いファイルパスでディレクトリを見つけてソートする方法は?

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バイトにエンコードされます。

関連情報