実際、毎月金曜日に2012年に作成されたファイルとフォルダを検索する必要があります。
このコマンドを使用していくつかの試みをしましたが、find
成功しませんでした。
ベストアンサー1
最も簡単な方法find
は次のとおりです。
find / -daystart -mtime +41 -mtime -408 \
-printf "%M %n %u %g %10s %TY-%Tm-%Td %Ta %TH:%TM:%TS %h/%f\n" |
awk '($7=="Fri"){print}'
必要に応じて調整し、ここ-printf
に近づくようにしますls -l
。
%T
(および)を使用すると、タイムスタンプ形式(たとえば曜日)を%A
%C
使用できます。 (日付範囲を41〜408に調整する必要があるかもしれませんが、実際には単に最適化するか、より簡単に把握するために調整できます。)strftime()
%Ta
grep 2012
-printf
編集する:より強力なバージョンですが、明確さはわずかに減少しました。
find / -daystart -mtime +41 -mtime -408 \
-printf "%M %n %u %g %10s %TY-%Tm-%Td %Ta %TH:%TM:%TS\0%h/%f\0\0" |
gawk 'BEGIN{RS="\0\0"; FS="[\0]"} ($1~/ Fri /) { printf $2 "\0"}' |
xargs -0 -n 1 -i ls -l "{}"
これはシミュレーションです-print0
が、各行には2つの\0
区切りフィールドがあり、ファイル名は2番目です。ls -l "{}"
末尾をファイルに関して必要なものに置き換えます。私は明示的にを使用していますが、他のawksは/の\ 0バイトをそのようにgawk
親切に処理しません(ファイル名の改行文字を処理するように更新されました)。RS
FS
しかも提案によるとmretub%Tu
言語独立オプションを使用する%Ta
か、番号付きの平日を置き換えることができます。