是否可以列出与ls模式匹配的文件?

时间:2019-05-22 15:00:04

标签: bash shell file sh ls

我想使用ls列出与模式匹配的目录文件,而不使用grep。有可能吗?

重点是检索与此模式'^\Extra_text_[0-9]\{10\}.csv'匹配的所有文件 算我有多少。

我尝试了以下代码:

ls | grep '^\Extra_text_[0-9]\{10\}.csv'

InputName=' | grep ^\Extra_text_[0-9]\{10\}.csv'

fileCount=`ls $INPUT_FILE/$InputName 2>/dev/null | wc -l`

echo "$fileCount

但这不起作用! :/

1 个答案:

答案 0 :(得分:1)

不仅使用lsls完全不了解模式。它只能与外壳程序提供的通配符(通配符*?或扩展的通配符一起使用-参见Bash手册页中的extglob),而不能与正则表达式一起使用。

一种简单的方法是为此工作使用find(请注意,正则表达式必须匹配整个文件名):

find . -regex '<yourpattern>'

要计算结果,请传递到wc

# safe for corner case: version of find w/o newline escaping and files with newlines:
find . -regex '<yourpattern>' -printf '.' | wc -c    

# fallback for non-GNU platform, corner cases not addressed:
find . -regex '<yourpattern>' | wc -l 

-regex手册页中找到find,以获取更多信息。