私のフォルダの1つに次の形式のファイルが含まれています。
3_20150412104422154033.txt
3_2015041211022775012.txt
3_20150412160410171639.txt
3_20150412160815638933.txt
3_20150413161046573097.txt
3_20150413161818852312.txt
3_20150413163054600311.txt
3_20150413163514489159.txt
3_2015041321292659391.txt
3_20150414124528747462.txt
3_20150414125110440425.txt
3_20150414134437706174.txt
3_20150415085045179056.txt
3_20150415100637970281.txt
3_20150415101749513872.txt
日付値が入力日付値以下であるファイルを検索したいと思います。
たとえば、「3_20150414」(3_YYYYMMDD)と入力すると、出力がファイル名になることを望みます。
3_20150412104422154033.txt
3_2015041211022775012.txt
3_20150412160410171639.txt
3_20150412160815638933.txt
3_20150413161046573097.txt
3_20150413161818852312.txt
3_20150413163054600311.txt
3_20150413163514489159.txt
3_2015041321292659391.txt
3_20150414124528747462.txt
3_20150414125110440425.txt
3_20150414134437706174.txt
次のコマンドを実行してファイルを一覧表示できます。
ls -l | grep '20150413\|20150414' |awk '{print $NF}'
しかし、私は一つを見つけようとしています。<=
マッチ。
ベストアンサー1
awk
文字列比較演算子で、およびを使用できます。
ls | awk '$0 < "3_20150415"'
変数から:
max=3_20150414 export max
ls | LC_ALL=C awk '$0 <= ENVIRON["max"] "z"'
ここで「z」を連結すると、比較は文字列比較であり、ロケール内の数字がC
前にソートされるため、1日中いつでも許可されますz
。
では、zsh
次のこともできます。
print -rC1 -- *.txt(e['[[ $REPLY < ${max}z ]]'])