在Bash中查找文件夹内所有文件名中包含指定字符串的情况

3

我正在尝试编写一个脚本,使其允许我选择文件名中包含2个或更多相同字符串的文件。

例如:

test.txt      // 1 occurrence only, not ok
test-test.txt // 2 occurrences OK
test.test.txt // 2 occurrences OK

我希望这个脚本只返回文件2和3。我尝试了这样做,但是没有成功:
rows=$(ls | grep "test")
for file in $rows
do
        if [[ $(wc -w $file) == 2 ]]; then
                echo "the file $file matches"
        fi
done

这个想法是使用grep -c获取出现次数,然后使用wc -w来比较单词数和行数(匹配的文件应该有wc -l = 2和grep -c = 1)。 - Grugnas
2个回答

3

grepwc 太过复杂。一个简单的通配符就足够了:

*test*test*

您可以这样使用:
ls *test*test*

或者

for file in *test*test*; do
    echo "$file"
done

这确实有效,我只是想知道是否有一种更通用的方法,而不必指定出现次数。我的意思是通过操作grep输出来获取其中出现次数的方法。 - Grugnas

0
你可以使用以下命令:
```result=$(grep -o "test" yourfile | wc -l)``` -wc 是单词计数器
在 shell 脚本中,如果 $result>1,则执行相关操作...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接