私はこのfind
コマンドを使用して30分以内に生成されたファイルを見つけます。
find . -ctime -30m
ただし、最大30日間文書を提供します。私もこれを試しましたが、これが有効なオプションではないこと-mmin
を示しています。-mmin
find
私のコマンドに問題がありますか?
出力uname -rs
はですAIX 2
。
答え1
AIX にはfind
良い GNU 機能がない。
この問題を簡単に解決できます。関心のある境界を示すタイムスタンプを持つ2つの「参照」ファイルを作成します。
touch -amt 201407251200 myref1
touch -amt 201407251230 myref2
今それをする:
find . -type f \( -newer myref1 -a ! -newer myref2 \) -exec ls -ld {} +
ファイルのmtime
時刻または変更時刻を示します。追加の変更(書き込み)が行われていない場合、これはファイルの作成タイムスタンプになり、それ以外の場合はファイルが最後に変更された時刻を示します。データ。ディレクトリの場合、mtime
新しいオブジェクトが追加されるか、古いオブジェクトが削除されると更新されます。 Classic Unix / Linuxには実際の生成タイムスタンプはありませんが、これは一部のプラットフォームで実装および検索できます。 (もっと見るここ。 MAC OSユーザーは、「ls -lU」を使用してこれを取得できます。
ctime
「作る」と混同しないでください。 stat ctime
() 構造は、inode 変更 (たとえば、権限、所有権、およびオブジェクト名) の最後のタイムスタンプを表します。
答え2
補う@JRファーガソンの答え。
過去30分間に変更された参照ファイルをインポートするには、移植操作を実行できます(1秒精度)。
TZ=ZZZ0 touch -t "$(TZ=ZZZ0:30 date +%Y%m%d%H%M.%S)" /some/ref/file
次に、次のようにします。
find . -newer /some/ref/file
これは50時間間隔でのみ機能します。
TZ=ZZZ-24:59:59 touch -t "$(TZ=ZZZ24:59:59 date +%Y%m%d%H%M.%S)" file
これは、移植可能な方法(POSIXly)で取得できる最も古いファイルです。
答え3
ページで-cmin
.fromを使用する必要があります。man
find
-cmin n
File’s status was last changed n minutes ago.
-ctime n
File’s status was last changed n*24 hours ago. See the comments for -atime to understand how rounding affects the interpreta-
tion of file status change times.
答え4
あなたはそれを使用することができますperl
:
#! /usr/bin/perl
use strict;
use warnings;
use File::Find ();
use File::stat;
use vars qw(*name);
*name = *File::Find::name;
my $now = time;
File::Find::find({wanted => \&wanted}, '.');
sub wanted {
print "$name\n" if stat($_)->mtime > ($now - 30*60)
and $name ne ".";
}
OSX
またはFreeBSD
(を使用して)を除いて、ファイル作成日を取得することはできませんls -U
。
ext2/3/4
ファイルシステムにある場合は、次のものを使用できます。デバッグファイルファイル生成日を取得します。