特定の日付(たとえば月曜日)に最後に変更されたすべてのファイルを見つけますか?

特定の日付(たとえば月曜日)に最後に変更されたすべてのファイルを見つけますか?

findだから私はそれを使用して、月曜日に最後に変更された特定のディレクトリのすべての.htmlファイルのリストを返したいと思います。どうすればいいですか?

ベストアンサー1

onlyまたは同様のものを使用してこれを直接find実行する良い方法はわかりませんが、次のfindことを使用できますgrep

find -printf '%Tw:%h/%f\0' | grep -z '^1:'

そのため、findもちろん他のフラグを組み合わせることもできます。

find -name '*.html' -type f -printf '%Tw:%h/%f\0' | grep -z '^1:'

.htmlで終わるファイルのみをインポートします。

説明する

これは私のテストディレクトリです。

$ ls -la
total 68
drwxr-xr-x  2 anthony anthony  4096 Mar 24 17:53 .
drwxrwxrwt 98 root    root    61440 Mar 24 17:55 ..
-rw-r--r--  1 anthony anthony     0 Mar 24 17:53 monday
-rw-r--r--  1 anthony anthony     0 Mar 23 11:12 sunday

find引数は-printfフォーマット文字列を使用します。ここで、%Tは最後の修正時刻を表します。以下は、w0(日曜日)から6(土曜日)までの曜日を示しています。a(略語:Mon)または(すべて:Monday)を使用して名前を取得できますが、Aこれはロケールによって異なります。:リテラルを提供します:%h/%fはパスとファイル名です。\0nullは項目を区切ります(これと同じです-print0)。

これは次の内容を印刷します1:./.<NULL>0:./sunday<NULL>1:./monday<NULL>。読みやすくするために、NULLを改行文字に置き換えると、次のようになりますtr '\0' '\n'

1:./.
0:./sunday
1:./monday

次に、grep -z '^1:'1:(月曜日)で始まる項目を見つけます。

おすすめ記事