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/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では1バイト、UTF-16では2バイト、UTF-8では3バイトにエンコードされます。