yyyy/mm/dd形式で保存されたファイルを探す

yyyy/mm/dd形式で保存されたファイルを探す

午前1時に実行され、次のyyyy / mm / dd形式で昨日と今日のindex.htmlを生成するクローンタスクがあります。

-1日をつかんでユーザーに送信する必要があります。どうすればいいですか?

-bash-4.2$ find /var/lib/pgsql/scripts/outfile/ -type f -name index.html

/var/lib/pgsql/scripts/outfile/2022/06/29/index.html 
/var/lib/pgsql/scripts/outfile/2022/06/30/index.html

この場合、

/var/lib/pgsql/scripts/outfile/2022/06/29/index.html

Bashスクリプトを使用してこれをどのように実行できますか?

ベストアンサー1

明らかに一連の式が必要ですyesterday2022/06/30あなたの例では今日の仮定)。

dateこれは(GNU)またはbash(+ 4.2)自体によって生成できますdate -d yesterday +%Y/%m/%d

$ printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))"
2022/06/29

1日が実際に86400秒で、DSTがそれを妨げないとします。

これにより、次のファイルの完全なディレクトリが表示されます。

dir='/var/lib/pgsql/scripts/outfile/'
name='index.html'
yest="$(printf "%(%Y/%m/%d)T" "$(($(printf "%(%s)T" -1)-86400))")"
file="$dir$yest/$name"

[[ -e "$file" ]] || exit 3

echo "$file"

cronが使用されることに注意してくださいsh(ではありませんbash)。上記のスクリプトを使用するbashか、ファイルに作成されたスクリプトをbash /path/to/scriptfilecronから呼び出す必要がありますsh

おすすめ記事