在具有变量名称的多个文件上使用diff

时间:2014-03-14 01:13:24

标签: bash file terminal

我有一堆文件,例如:

error1.sol
error2.sol
comment1.sol

等等

我的程序创建了这些输出文件:

myerror1.sol
myerror2.sol
mycomment1.sol

等等

我如何以优雅的方式使用diff来匹配

diff error1.sol myerror1.sol
diff error2.sol myerror2.sol

自动?

1 个答案:

答案 0 :(得分:2)

for fname in my*.sol
do
    diff "${fname#my}" "$fname"
done

以上查找程序创建的每个文件(my*.sol)。每个此类文件依次分配给变量名fname。使用fname,我们可以通过从前面删除my来获取源文件的名称。这是通过${fname#my}完成的。然后在这两个文件上运行diff。循环重复与当前目录中的文件一样多。

如果添加echo命令以显示正在比较的文件,您可能会发现输出更容易阅读:

for fname in my*.sol
do
    echo Comparing "${fname#my}" and "$fname"
    diff "${fname#my}" "$fname"
done