检查文件名中的连续数字[BASH]

时间:2016-01-06 14:59:57

标签: bash multidimensional-array error-checking

定期间隔文件以到达三个不同目录的数字结尾。 (文件格式= filename_number.mxf) 我提出的脚本剥去了最后四个文件的编号 并将它们放入变量中。该脚本将由 incrond

执行
for bier in $(ls -tr *.mxf | tail -n -4)
do
file="${bier#*_}"
base=${file%.*}
echo $base
done;

但是我如何在三个目录的连续性上测试它 并告诉这个发生在哪个目录? (在下面的示例中, dir2 中的编号为20117的文件未到达, 当发生这种情况时,我想提出一个警告/触发器)

这应该报告为正确:

<dir1>   <dir2>   <dir3>
20114    20114    20114
20115    20115    20115
20116    20116    20116
20117    20117    20117

这应该报告为不正确: (dir2中的文件是其余文件的一个文件)

<dir1>   <dir2>   <dir3>
20114    20113    20114
20115    20114    20115
20116    20115    20116
20117    20116    20117

1 个答案:

答案 0 :(得分:0)

也许这样的事情会有所帮助

$ f() { ls -tr $1/*.mxf | tail -n -4 | xargs -n1 basename; }; 
  cmp --silent <(f dir1) <(f dir2) && cmp --silent <(f dir2) <(f dir3);
  echo $?

1