如何在find命令中使用变量?

时间:2015-08-21 14:01:07

标签: linux bash command-line find command

我是bash的新手,很抱歉,如果我的问题格式不正确或没有意义:)

我正在尝试做类似的事情:

#..................... previous code where F is defining

filename="$F";
echo "$filename";
find . -name ????? | while read fname; do
    echo "$fname";
done;

我想在find命令中使用我的变量$ filename(而不是????),但我不知道如何。我在那里添加一些固定值用于测试目的,例如“abc.txt”(存在并存储在我的变量中),它运行良好,我只是不知道如何在find命令中使用变量。

这样的东西
find . -name '$filename.txt' | while read fname;

更新:(我在文件夹中有两个文件名相同的文件(.xml和.txt))

find . -type f -name \*.xml | while read F; 
    do something || echo $F;
    cat "$F";
    #name without extenssion
    filename="${F%.*}";
    echo "$filename";
    find . -name "$filename.txt" | while read fname; do
        echo "$fname";
    done;
done;

1 个答案:

答案 0 :(得分:2)

这将有效:

filename="$F";
echo "$filename";
find . -name "$filename.txt" | while read fname; do
    echo "$fname";
done;

虽然你可以轻松做到:

find . -name "$F.txt" | while read fname; do
    echo "$fname";
done;

变量扩展需要双引号(或根本没有引号)。单引号不起作用。