我想使用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
但这不起作用! :/
答案 0 :(得分:1)
不仅使用ls
。 ls
完全不了解模式。它只能与外壳程序提供的通配符(通配符*
和?
或扩展的通配符一起使用-参见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
,以获取更多信息。