如何找到名称中某处连续五位数字的文件?

如何找到名称中某处连续五位数字的文件?

通常情况下,我会问教授或同学这个问题,但因为是星期六,每个人都走了。我必须在目录中找到一个文件名中连续有五位数字的文件。它们不必是升序或降序数字。

答案1

通配符(或通配符)可以通过数字范围来完成此操作:

ls -d /path/to/directory/*[0-9][0-9][0-9][0-9][0-9]*

这告诉 shell 在 /path/to/directory 中查找以下开头的文件名:

  • *-- 任何东西(或什么都没有)
  • [0-9]-- 一个数字
  • (还有四位数字)
  • *——以任意(或无)结尾

然后将该文件名列表传递给以ls列出它们。

更广泛地说,bash 还允许字符作为通配符,因此如果您的语言中有 [0-9] 未涵盖的数字,您可以使用:

ls -d *[[:digit:]][[:digit:]][[:digit:]][[:digit:]][[:digit:]]*

答案2

我通过以下方法实现了并且工作得很好

find . -maxdepth 1  -type f| sed "s/\.\///g"| awk -F "." '{print $1}'|sed '/^$/d'| awk '/[0-9]/{print $0}'| awk '{print $1,gsub("[0-9]",$1)}'| awk '$2 == 5 {print $1}'

相关内容