1

別のファイルが作成される前後に(例として)30分で作成されたすべてのファイルを表示するコマンドを理解しようとしています。これまでのところ、そのファイルよりも新しいファイルを見つけることができましたが、指定された時間の前後の両方を検索する方法を理解できません。

私が使用したコマンド:find -type f -newer file.txt -cmin -30

これは正常に機能しますが、私がやろうとしていることの半分しか実行しません。また、setuidファイルのみを検索するように変更する必要があります。これは、そのコマンドに-perm-4000を追加することで実行できると思います。

助言がありますか?

4

1 に答える 1

3

私の知る限り、ファイルの作成時間を見つける方法はありません。変更時間で試すことができます(これにより、5日から8日の間に最後に変更されたすべてのファイルが取得されます)

find . -type f -newermt 2012-10-05 ! -newermt 2012-10-08

(またはアクセス時間はに置き換えnewermtますnewerat

newerXY現在のファイルのタイムスタンプを参照と比較するためのフラグです(詳細については、man findを参照してください)。

(私のDebianでは)4つのフラグがあります(時間として直接解釈することをman find除いて)t

a   The access time of the file reference
B   The birth time of the file reference
c   The inode status change time of reference
m   The modification time of the file reference

出生時に試すこともできます'B'が、うまくいきません。エラーが発生します。なぜマニュアルページに含まれているのかわかりません

別のファイルと比較する

find / -newer file
find / ! -newer file

一時ファイルを作成できます(ターゲットファイルの30分前に変更時間があり、さらに30分後)

touch -d `stat -c %y test.txt` - 30 temp/before_temp
touch -d `stat -c %y test.txt` + 30 temp/after_temp

find / -newer temp/before_temp ! -newer temp/after_temp

touch -d日付オプションを使用するため、正しく加算および減算すれば、これは機能するはずです。

于 2012-10-08T11:39:29.077 に答える