在Bash中的文件夹中的所有文件名中出现字符串

时间:2017-07-20 10:16:50

标签: bash pattern-matching glob

我正在尝试创建一个脚本,允许我选择名称中出现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

2 个答案:

答案 0 :(得分:3)

grepwc有点矫枉过正。一个简单的glob就足够了:

*test*test*

您可以这样使用:

ls *test*test*

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

答案 1 :(得分:0)

您可以使用:

result=$(grep -o "test" yourfile | wc -l)

-wc 是字数

在shell脚本中如果$result>1做了什么......