在我的 Ubuntu 系统上的一个大目录(>140000 个文件和 >200 个子目录)中,我知道某处有两个文件的名称太长而无法复制到 Windows (NTFS) 文件夹。我试了一下,收到两条错误消息,但我没有注意文件在哪些子文件夹中。
如何找到名称最长的两个文件?
在我的 Ubuntu 系统上的一个大目录(>140000 个文件和 >200 个子目录)中,我知道某处有两个文件的名称太长而无法复制到 Windows (NTFS) 文件夹。我试了一下,收到两条错误消息,但我没有注意文件在哪些子文件夹中。
如何找到名称最长的两个文件?
我猜@steeldriver 的解决方案是一个更好的选择,但这是我的替代解决方案,您可以使用命令组合来准确找到两个(或更多)最长的文件名。
输出将是:
这里有一个真实的例子:
笔记
find
为我们提供了该目录中所有文件的列表,例如:使用
awk
我们将文件长度添加到每行的开头(它正是文件长度而不是路径的长度):最后我们根据文件长度对其进行排序,并使用
head
.根据评论,在这种情况下,您真正需要的是名称超过某个最大字符数的所有文件的列表 - 幸运的是,使用
find
regex相对容易:对于如此大量的文件和目录,您可能希望避免排序 - 而是让我们只保留最长和第二长文件名及其完整路径名的运行记录:
或使用 GNU awk(支持 2D 数组)