我的Linux系统上有一个目录,其内容是成对的文件名,如下所示:
File1a
File1b
File2a
File2b
File3a
File3b
我想在File1a和File1b的内容之间进行差异,并将结果存储在单独的文件中。类似地,这会在遍历整个列表的其他对上执行。可以用shell脚本实现吗?
答案 0 :(得分:2)
for x in 1 2 3
do
diff File${x}a File${x}b > File${x}diff
done
这会将每个diff放入自己的文件中(例如File1diff
)。如果您想将所有差异合并到一个文件中,您可以这样做:
for x in 1 2 3
do
echo "***** Diff of File${x}a <> File${x}b:" >> DiffOutput
diff File${x}a File${x}b >> DiffOutput
done
答案 1 :(得分:1)
假设文件名的格式为File\d*{a,b}
:
for i in File*a; do
diff ${i} ${i%a}b > ${i%a}.diff
done
对于File1.diff
&amp;对,差异将被重定向到File1a
。 File1b
。
答案 2 :(得分:1)
如果您真的需要依赖文件中的内容,因为您的文件名与您发布的简单模式不匹配(并且您的文件名不包含空格),您可以执行以下操作:
xargs -L2 echo < file.txt | while read first second; do
diff "${first}" "${second}" > "${first}_${second}.diff"
done
否则请转到@ devnull或@ mbratch的解决方案。