如何在Linux上查找名称短于n个字符的文件?

问题描述 投票:0回答:3

如何在 Linux 上查找文件名短于 n 个字符的文件?

例如,为了有一些东西可以使用,我正在递归地查找

/home/myuser
内长度小于 5 个字符的所有文件名(因此,应该找到名称为
foo
的文件,但不能找到名称为
barbaz
的文件)因为它的名称超过 4 个字符)-我该怎么做?

linux find
3个回答
10
投票

-name
find
选项对不带路径的文件名进行操作。你不能在模式中说“短于”,但你可以说“长于”并否定:

find . -not -name '?????*'

5
投票

请尝试一下这个

find . -type f -exec basename {} \; | awk '{ if(length($0) < n) print $0 }'

其中“n”是“否”。字符数


0
投票

这也可以通过使用带 -E 开关的扩展正则表达式将 find 命令的输出通过管道传输到 grep 中来实现,即:

find -type f -exec basename {} \; | grep -E '^.{,4}$
'

在 grep 部分,^ 表示第一个字符位置,.表示任何字符,{,4} 表示 4 个或更少的前一个字符(现在表示 4 个或更少的任何字符),$ 表示最后一个字符位置。

带有 -E 开关的 grep 命令取代了我们以前所知道的egrep,该命令现已停止使用。

© www.soinside.com 2019 - 2024. All rights reserved.