【发布时间】:2016-01-27 17:13:52
【问题描述】:
我正在尝试查找文件名中只有数字的文件。例如,如果我有文件 123.txt、45.doc、alpha_123、beta_123.txt、45 和 123,我只想匹配文件 45 和 123。我尝试了 find 和 grep 的各种选项或它们的组合,但没有按我的意愿工作或给我语法错误。
还有没有机会我只能匹配空文件?我尝试使用“空”选项,但也没有成功,尽管这可能是由于使用了错误的语法。
这个find . -name "[0-9]*" 有点有效,因为它找到了文件名中带有数字的文件,例如文件 123 和文件 45,但它也找到了带有扩展名的文件,例如 123。 txt 和 45.doc,不幸的是这不是我想要的。
根据以下建议(因为我的原始问题在发布答案后经过大量编辑),完全符合我的要求的是$ find . -type f -name '[[:digit:]]*' | grep -E '.*/[0-9]+$'。
对于最初的误导/模棱两可的帖子,我深表歉意,我希望编辑后的版本对其他同样对如何将find 与正则表达式一起使用感到困惑的用户有所帮助。
【问题讨论】:
-
试试
find . -regex '.*/[0-9]+' -
find . -name '[[:digit:]]*'怎么样 -
@glenn jackman:不幸的是,这会找到所有文件名中包含数字的文件 - 我正在尝试查找文件名中只有数字的文件。
-
@kouki,不是真的。
-name '*[[:digit:]]*'会找到包含数字的文件。-name '[[:digit:]]*'查找以数字开头的文件。 -name 的参数是 glob 模式,而不是正则表达式。