Yas*_*ine 6 bash shell ls file sh
我想列出与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
但这不起作用!:/
不只与ls。ls根本不了解模式。它只能与shell 提供的通配符(通配符*和?/或扩展通配符 - 请参阅Bash 手册页)一起使用,但不能与正则表达式一起使用。extglob
一个简单的方法是用于find此作业(请注意,正则表达式需要匹配整个文件名):
find . -regex '<yourpattern>'
Run Code Online (Sandbox Code Playgroud)
要计算结果,请通过管道传输到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
Run Code Online (Sandbox Code Playgroud)
-regex在手册页中查找find更多信息。
| 归档时间: |
|
| 查看次数: |
11501 次 |
| 最近记录: |