我目前有一个看起来像这样的文件目录:
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