2016-01-06 16 views
0

定期以一个数字结尾的文件到达三个不同的目录。 (文件格式= filename_number.mxf) 我想出的脚本去掉了最后四个文件的编号 ,并将它们放入一个变量中。这个脚本会通过 incrond检查文件名中的连续数字[BASH]

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

使用查找并给出完整路径。 – 123

+1

[不要分析'ls'](http://mywiki.wooledge.org/ParsingLs)。然后或者使用'find'对所有文件一次操作,或者对每个目录使用不同的循环,并在最后进行整理。 –

回答

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