X분 전에 생성된 파일 찾기(GNU/BSD 검색 없음)

X분 전에 생성된 파일 찾기(GNU/BSD 검색 없음)

저는 이 find명령을 사용하여 30분 이내에 생성된 파일을 찾습니다.

find . -ctime -30m

하지만 최대 30일 동안 문서를 제공합니다. 나는 또한 이것을 시도했지만 이것이 유효한 옵션이 아니라는 -mmin것을 보여줍니다 .-mmin

find내 명령에 문제가 있나요?

출력 uname -rs은 입니다 AIX 2.

답변1

AIX에는 find좋은 GNU 기능이 부족합니다.

이 문제를 쉽게 해결할 수 있습니다. 관심 경계를 표시하는 타임스탬프가 있는 두 개의 "참조" 파일을 만듭니다.

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을 사용해야 합니다 .manfind

   -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파일 시스템 에 있다면 다음을 사용할 수 있습니다.디버그 파일파일 생성 날짜를 가져옵니다.

관련 정보