2016-01-06 38 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