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