생성된 지 15분이 지난 파일과 디렉터리를 HP Unix의 아카이브 폴더로 이동하고 싶지만 옵션을 찾을 수 없습니다. 나는 이를 위해 Perl 스크립트를 만들었지만 디렉터리는 이동하지 않고 파일만 이동했습니다.
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use File::Copy;
my $dstdir = '/tmp/test14';
@ARGV = ("/tmp/test11/") unless @ARGV;
print STDERR "Begin @ ", scalar localtime, "\n";
find(
sub {
if ( -f $_ && -M _ >= 1/96 ) {
print STDERR "Moving '$_'\n";
move( $File::Find::name, $dstdir ) or die "$!\n";
}
},
@ARGV );
print STDERR "Ended @ ", scalar localtime, "\n";
1;
입력하다:
/tmp/test11# ll
drwxrwxrwx 2 root sys 96 Mar 14 21:46 hello
drwxrwxrwx 2 root sys 96 Mar 14 21:46 hello1
-rw-rw-rw- 1 root sys 0 Mar 14 22:03 hello3
산출:
/tmp/test14# ll
-rw-rw-rw- 1 root sys 0 Mar 14 22:03 hello3
답변1
간단히 GNU를 사용하세요find
명령(지원되는 경우):
find . -type f -mmin +30 -delete
귀하의 상황이 변경되었으므로 업데이트된 버전은 다음과 같습니다.
find . -type f -cmin +15 -delete
답변2
HP-UX에 액세스할 수 없지만 Solaris나 모든 BSD 시스템(즉, GNU를 사용하지 않음 find
)에서는 다음이 작동합니다.
find . -type f -cmin +15 -print -exec rm {} +
그러면 마지막 inode 상태가 15분 이상 전에 변경된 현재 디렉토리 안이나 아래의 모든 일반 파일을 찾습니다. 해당 파일의 경로 이름이 표시되고 파일이 삭제됩니다.
삭제하기 전에 대화식으로 확인하려면 다음을 사용하세요.
find . -type f -cmin +15 -print -ok rm {} ';'
대부분의 Unix 파일 시스템은 파일을 추적하지 않습니다.만들다시간. 의지 에 대한 -cmin
술어 find
테스트시간파일의 "변경 시간", 즉 inode의 "변경 시간"입니다. 파일의 inode가 생성 이후 변경되지 않은 경우 이는 "생성 시간"이 됩니다. 이것시간파일이 생성될 때와 소유권 또는 권한이 수정될 때 타임스탬프가 업데이트됩니다. 파일 콘텐츠를 수정하면 이 타임스탬프도 업데이트됩니다.