大目录中最长的文件名

如果

在我的Ubuntu系统上的一个大目录(> 140000个文件和> 200个子目录)中,我知道某个地方有两个文件,它们的名称太长而无法复制到Windows(NTFS)文件夹。我尝试了一下,但收到了两条错误消息,但是我没有注意文件所在的子文件夹。

如何找到名称最长的两个文件?

拉韦西纳

我猜@steeldriver的解决方案是一个更好的选择,但是这是我的替代解决方案,您可以使用命令的组合来精确地找到两个(或更多)最长的文件名。

find . | awk 'function base(f){sub(".*/", "", f); return f;} \
{print length(base($0)), $0}'| sort -nr | head -2

输出将是这样的:

length ./path/to/file

这是一个真实的例子:

42 ./path/to/this-file-got-42-character-right-here.txt
31 ./path/to/this-file-got-31-character.txt

笔记

find 给我们该目录中所有文件的列表,例如:

./path/to/this-file-got-31-character.txt

使用awk我们将文件长度添加到每一行的开头(这是文件长度,而不是路径的长度):

31 ./path/to/this-file-got-31-character.txt

最后,我们根据文件长度对其进行排序,并使用来获得前两行head

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章