如何按最长文件路径查找目录并对其进行排序?

如何按最长文件路径查找目录并对其进行排序?

我在 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 中以一个字节编码,在 UTF-16 中以两个字节编码,在 UTF-8 中以三个字节编码。

相关内容