ワンライナー
例えば以下のように日付で管理されているファイルがあった際に
# ls 20190723.txt 20190729.txt 20190804.txt 20190810.txt 20190816.txt 20190724.txt 20190730.txt 20190805.txt 20190811.txt 20190817.txt 20190725.txt 20190731.txt 20190806.txt 20190812.txt 20190818.txt 20190726.txt 20190801.txt 20190807.txt 20190813.txt 20190819.txt 20190727.txt 20190802.txt 20190808.txt 20190814.txt 20190728.txt 20190803.txt 20190809.txt 20190815.txt
20190801から20190805だけを抜き出したい場合は以下のワンライナーで一発です。
# ls -l | awk '{print $NF}' | sed -n '/20190801/,/20190805/p' 20190801.txt 20190802.txt 20190803.txt 20190804.txt 20190805.txt
以下、補足です。
補足
sedコマンドを用いた以下の構文を利用しています。
sed -n '/開始パターン/,/終了パターン/p'
要は-n
オプションとp
フラグの組み合わせによってマッチした行のみを出力します。
例えば連続した数値を出力するseqコマンドを利用して
# seq 5 1 2 3 4 5
以下のように絞ることができます。
# seq 5 | sed -n '/2/,/4/p' 2 3 4
冒頭のワンライナーは前段のawkコマンド部分で最終列のファイル名だけを取り出し、後段のsedコマンドで開始と終了を指定して抜き出します。それらに対してxargsコマンド等を利用すれば一括処理も可能です。
以上、個人的によく使うワンライナーの紹介でした。頭の片隅に入れておくとどこかで役立つと思います。