使用 find 匹配以数字开头的文件名
use find to match filenames starting with number
我正在尝试查找文件名中只有数字的文件。比如我有文件123.txt、45.doc、alpha_123、beta_123.txt、45和123,我只想匹配文件45和123。我试过了find
和 grep
或它们的组合的各种选项,但没有任何效果如我所愿或给我语法错误。
还有我只能匹配空文件的可能性吗?我尝试使用选项 "empty" 但也没有成功,尽管这可能是由于使用了错误的语法。
这 find . -name "[0-9]*"
种 有效,因为它找到了文件名中带有数字的文件,例如文件 123 和文件 45,但它也找到了带有一个扩展,例如 123.txt 和 45.doc,不幸的是这不是我想要的。
根据下面的建议(因为我的原始问题在答案被 posted 后进行了大量编辑),完全符合我要求的是 $ find . -type f -name '[[:digit:]]*' | grep -E '.*/[0-9]+$'
.
对于最初的 misleading/ambiguous post,我深表歉意,我希望编辑后的版本对其他同样对如何使用 find
与正则表达式感到困惑的用户有所帮助。
或者这个:
$ find -E . -type f -regex '.*/[[:digit:]]+$'
或者这样:
$ find . -type f -name '[[:digit:]]*' | grep -E '.*/[0-9]+$'
努力查找名称完全由数字组成(即没有扩展名)的文件
我正在尝试查找文件名中只有数字的文件。比如我有文件123.txt、45.doc、alpha_123、beta_123.txt、45和123,我只想匹配文件45和123。我试过了find
和 grep
或它们的组合的各种选项,但没有任何效果如我所愿或给我语法错误。
还有我只能匹配空文件的可能性吗?我尝试使用选项 "empty" 但也没有成功,尽管这可能是由于使用了错误的语法。
这 find . -name "[0-9]*"
种 有效,因为它找到了文件名中带有数字的文件,例如文件 123 和文件 45,但它也找到了带有一个扩展,例如 123.txt 和 45.doc,不幸的是这不是我想要的。
根据下面的建议(因为我的原始问题在答案被 posted 后进行了大量编辑),完全符合我要求的是 $ find . -type f -name '[[:digit:]]*' | grep -E '.*/[0-9]+$'
.
对于最初的 misleading/ambiguous post,我深表歉意,我希望编辑后的版本对其他同样对如何使用 find
与正则表达式感到困惑的用户有所帮助。
或者这个:
$ find -E . -type f -regex '.*/[[:digit:]]+$'
或者这样:
$ find . -type f -name '[[:digit:]]*' | grep -E '.*/[0-9]+$'
努力查找名称完全由数字组成(即没有扩展名)的文件