另一種方法給您的日常文件和測試內容爲 「在$ FINAL_LOG存儲的所有日誌」:
mainentrywatcher_2015-02-16.log -> a
mainentrywatcher_2015-02-17.log -> b
mainentrywatcher_2015-02-18.log -> c
mainentrywatcher_2015-02-19.log -> d
mainentrywatcher_2015-02-20.log -> e
利用的bash 參數擴展/子串提取將是一個簡單的循環:
#!/bin/bash
declare -i cnt=0 # simple counter to determine begin
for i in mainentrywatcher_2015-02-*; do # loop through each matching file
tmp=${i//*_/} # isolate date
tmp=${tmp//.*/}
[ $cnt -eq 0 ] && begin=$tmp || end=$tmp # assign first to begin, last to end
((cnt++)) # increment counter
done
cmbfname="${i//_*/}_${begin}_${end}.log" # form the combined logfile name
cat ${i//_*/}* > $cmbfname # cat all into combined name
## print out begin/end/cmbfname & contents to verify
printf "\nbegin: %s\nend : %s\nfname: %s\n\n" $begin $end $cmbfname
printf "contents: %s\n\n" $cmbfname
cat $cmbfname
exit 0
使用/輸出:
alchemy:~/scr/tmp/stack/tmp> bash weekly.sh
begin: 2015-02-16
end : 2015-02-20
fname: mainentrywatcher_2015-02-16_2015-02-20.log
contents: mainentrywatcher_2015-02-16_2015-02-20.log
a
b
c
d
e
可以,當然,修改for loop
接受含有部分文件名的位置參數和通過命令行傳遞的部分的文件名。
您可以使用'head'和'tail'來獲取目錄中的第一個和最後一個文件名。 – dimo414 2015-02-23 18:28:15
'head','tail'和一些字符串操作('cut' /'grep',http://tldp.org/LDP/abs/html/string-manipulation.html,...) – 2015-02-23 18:28:16