2012-03-16 353 views
6

先月作成されたPDFの数を取得しようとしています。私は、次のコマンドを使用していますが、それはこれが機能しない理由に...私は正しいディレクトリにいるとロジックが正しいかのようにそれはそう任意のアイデアを0先月に修正されたファイルの数を取得する

find . -name '*.pdf' -mtime +46 ! -mtime +30 | wc -l 

を返すのですか?もっと簡単な方法はありますか?私はこのような日を計算しようとするのではなく、探している特定の月を渡すと言っていますか?

答えて

21

あなたはすべてのpdfのファイルを見つけている:

  • 46日前
  • ない30日前

    x>46 && x<=30 --> false 
    

それは空の結果を返します。


Numeric arguments can be specified as 
    +n  for greater than n, 
    -n  for less than n, 
    n  for exactly n. 

あなたはすべてのpdfファイル(30<x<46)見つけたい場合:

$ find . -name '*.pdf' -mtime +30 -mtime -46 
+0

アクセスタイム( 'atime')、時間の変更(' ctime')、時間の変更( ''タイムスタンプ ''の3種類があります)(https://unix.stackexchange.com/a/2465/209677) 'mtime')。なぜ 'ctime'ではなく' mtime'を使うのですか? –

6

をあなたは、古い(すなわち若い)30より46日より前ではなく、あるファイルを探しているように見えます日々。

これはどうですか?あなたはGNU findを使用している場合

find . -name '*.pdf' -mtime -46 -mtime +30 
8

次のような絶対的な日付を指定することができます。

find . -name '*.pdf' -newermt 2012-01-31 ! -newermt 2012-02-29 | wc -l 

-newermtオプションは、絶対時間以上に最近変更されたファイルを検索します。あなたがGNUを使用していない場合、あなたは適切なタイムスタンプを持つ2つのファイルを作成し、このようなあなたのPDFファイルを検索するためにtouchを使用することができます

touch -t 201201312359 oldest # 11:59 PM 1/31/2012 
touch -t 201203010000 newest # midnight 3/1/2012 
find . -name '*.pdf' -newer oldest ! -newer newest | wc -l 

は詳細についてはGNU documentationを参照してください。

+0

チップをありがとう!これは4.3.3+(2009年1月24日)で動作するため、古いシステム(RHEL 5など)では利用できません。 – Nickolay

関連する問題