![](/img/trans.png)
[英]How can I use a single command to unzip every file in a directory, into a new unique directory with the same name as the file
[英]Shell how to use a command on every file in a directory
因此,我要做的是在目录内和目录下找到所有常规文件。 对于这些常规文件中的每一个,我都必须为pattern($ ARG)进行egrep,并找出文件的输出是否与模式($ ARG)相匹配,如果匹配则将其添加到计数器中。
到目前为止,我所拥有的是file命令:
$count = 0
file *
但是,我在获取egrep&ARG> / dev / null /时遇到了麻烦。 回声$? 运行(file *)中出现的每个文件。
我了解该文件* | egrep目录> / dev / null; 回声$? 会输出0,因为它在文件中找到了模式“目录”,但是在使其循环遍历每个常规文件时遇到了麻烦,因此每次模式匹配时我都可以在计数器中添加一个。
问题尚不清楚,但是如果您要查找包含模式的文件数量
grep -l "pattern" * 2>/dev/null | wc -l
会给你的。 来自目录的错误将被忽略。
如果您想递归地做完整的树,包括点文件
grep -r -l "pattern" | wc -l
您可以尝试以下方法:
counter=0
find /path/to/directory/ -type f | \
while read file
do
if grep -i -e -q "$pattern" "$file"
then counter=$((counter+1))
fi
done
echo "$counter"
参见http://mywiki.wooledge.org/BashFAQ/020
counter=0
shopt -s globstar nullglob
for file in **; do
grep -qiE "$pattern" "$file" && ((counter++))
done
echo "$counter"
如果要包括隐藏文件,请添加shopt -s dotglob
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.