如何在 Linux 上查找文件名短于 n 个字符的文件?
例如,为了有一些东西可以使用,我正在递归地查找
/home/myuser
内长度小于 5 个字符的所有文件名(因此,应该找到名称为 foo
的文件,但不能找到名称为 barbaz
的文件)因为它的名称超过 4 个字符)-我该怎么做?
-name
的find
选项对不带路径的文件名进行操作。你不能在模式中说“短于”,但你可以说“长于”并否定:
find . -not -name '?????*'
请尝试一下这个
find . -type f -exec basename {} \; | awk '{ if(length($0) < n) print $0 }'
其中“n”是“否”。字符数
这也可以通过使用带 -E 开关的扩展正则表达式将 find 命令的输出通过管道传输到 grep 中来实现,即:
find -type f -exec basename {} \; | grep -E '^.{,4}$
'
在 grep 部分,^ 表示第一个字符位置,.表示任何字符,{,4} 表示 4 个或更少的前一个字符(现在表示 4 个或更少的任何字符),$ 表示最后一个字符位置。
带有 -E 开关的 grep 命令取代了我们以前所知道的egrep,该命令现已停止使用。