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