Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題61

問題61 先週のファイル

先週(日曜始まり)更新されたファイルを表示する問題だった。grep でやるかと思ったが汎用性に欠けるし、date をうまく使うのだろうと思ったが思いつかなかった。

解答例は

find . -daystart -mtime -$((8 + $(date '+%w'))) -mtime +$(date '+%w') -type f | sort

である。-mtime の後ろに来ている式について、これはカレンダーを実際に見ながら考えるとわかりやすい。例えば今日が木曜日だとすると -mtime -12 -mtime +4 となり、12日前から4日前までとなる。これはちょうど先週一週間を表している。数字の前についている+,-はそれぞれその数より大きい、小さい数を表している。