在我的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] 删除。
我来说两句