Hig*_*lar 10 find text-processing filenames
我正在尝试从 Windows 刻录 DVD,但它失败了,因为完整路径名长度超过了 255 个字符的限制。
我们的文件存储在 Debian Linux(由 Windows 使用 samba 访问)中,因此为了避免运行一些狡猾的 Windows 应用程序来查找长路径名,我更愿意使用 Linux 命令来查找它们。
我可以运行什么命令来输出给定文件夹的相对路径和文件名列表,按每个文件夹的长度排序(降序)?
输出应如下所示:
92 ./site/testapidocs/wjhk/jupload2/policies/class-use/DefaultUploadPolicy_WithoutAlertBox.ht
83 ./site/testapidocs/wjhk/jupload2/upload/class-use/PacketConstructionThreadTest.html
76 ./site/apidocs/wjhk/jupload2/upload/helper/class-use/ProgressBarManager.html
52 ./site/xref/wjhk/jupload2/gui/JUploadFileFilter.html
31 ./site/samples.java/applet.jnlp
17 ./site/index.html
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 20
使用 GNU find(在 Linux 或 Cygwin 上),您可以查找相对路径长度超过 255 个字符的文件:
find -regextype posix-extended -regex '.{257,}'
Run Code Online (Sandbox Code Playgroud)
(初始 257 个帐户./
。)
我找到了两种方法:
find . | perl -pe 'print (length($_)-1)." ";' | sort -rn | less
find . | awk '{print length,$0}' | sort -rn | less
Run Code Online (Sandbox Code Playgroud)
我第一次尝试(find . | perl -pe 'print length;' | sort -rn | less)在命令中使用 perl 报告了一个太高的字符数,因为我认为它的计数中包含一个换行符?它可能比我上面的方法更干净,但我得到了我需要的结果。