小编xte*_*rez的帖子

运行差异并让它停止差异

我有一个运行的脚本,它检查多个目录并将它们与其他地方相同目录的扩展tarball进行比较.

我正在使用diff -r -q和我想要的是,当diff在递归运行中发现任何差异时,它将停止运行而不是在同一运行中通过更多目录.

所有帮助赞赏!

谢谢

@bazzargh我确实像你建议或喜欢这样尝试.

for file in $(find $dir1 -type f); 
do if [[ $(diff -q $file ${file/#$dir1/$dir2}) ]]; 
then echo differs: $file > /tmp/$runid.tmp 2>&1; break; 
else echo same: $file > /dev/null; fi; done 
Run Code Online (Sandbox Code Playgroud)

但这仅适用于两个目录中存在的文件.如果丢失了一个文件,我将无法获得相关信息.我正在使用的目录也有超过300.000个文件,因此find对每个文件执行一个似乎有点开销diff.

我希望这样的东西可以工作,并且elif声明检查是否$runid.tmp包含数据,如果包含数据则中断.我2>在第一个if语句后添加,因此stderr发送到$runid.tmp文件.

for file in $(find $dir1 -type f); 

do if [[ $(diff -q $file ${file/#$dir1/$dir2}) ]] 2> /tmp/$runid.tmp; 

then echo differs: …
Run Code Online (Sandbox Code Playgroud)

linux bash diff

3
推荐指数
1
解决办法
1471
查看次数

标签 统计

bash ×1

diff ×1

linux ×1