根据文件名比较目录文件

根据文件名比较目录文件

我目前有一个看起来像这样的文件目录:

abcd.txt
abcd_.txt
qrst.txt
qrst_.txt
wxyz.txt
wxyz_.txt

理论上,abcde_.txt 中的每一行都应包含在 abcd.txt 中,qrst_.txt 中的每一行都应包含在 qrst.txt 中,依此类推。虽然我可以比较两个文件来单独测试这一点,但我正在尝试找到一种更有效的方法来对整个目录执行此操作。

在这样的情况下,如果我有很多对文件,但我事先不知道它们各自以什么字符串开头,有没有办法循环遍历并处理每组两个相关文件一次?

答案1

从名字列表中,你可以找到*_.txt。从名称中删除_.txt并添加.txt.比较两个文件。

for f1 in *_.txt; do
    f2="${f1%_.txt}.txt"
    compare "$f1" "$f2"
done

答案2

如果您已经知道每个文件file.txt都有一个文件file_.txt,我将使用 来_区分它们

像这样的代码应该可以工作:

files=(`ls | grep -v "_"`)
for f1 in ${files[@]}
do
     f2=`echo $f1 | sed -r 's/.txt/_.txt/g'`
     diff $f1 $f2
done

相关内容