0

以到达三个不同目录的数字结尾的定期文件。(文件格式= 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
4

1 回答 1

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
于 2016-01-06T15:54:16.153 回答