ここに完全な解決策があります。これを試してください:
正規表現なしでオフセットカット(スクリプトがで実行されているときのように、例がすべてのファイルで同じ形式であると仮定しますcrontab
):
cd /path/to/dumps
str='20130321_145907-databasename.sql'
for i in {7..14}; do
curfile=$(date -d ${str:0:8} -d "$i days ago" '+%Y%m%d')*
if [[ -s $curfile ]]; then
# do something with "$curfile"
fi
done
本当に正規表現が必要な場合:
cd /path/to/dumps
str='20130321_145907-databasename.sql'
if [[ $str =~ ^([0-9]{8})_[0-9]{6} ]]; then
for i in {7..14}; do
curfile=$(date -d ${BASH_REMATCH[1]} -d "$i days ago" '+%Y%m%d')*
if [[ -s $curfile ]]; then
# do something with "$curfile"
fi
done
fi
ノート
- 行の最後のグロブ
*
に注意してくださいcurfile=