2014-10-22 2 views
0

유닉스 Ksh 명령에서 아래의 시나리오를 어떻게 수행 할 수 있습니까?Unix에서 특정 타임 스탬프보다 큰 파일을 패턴으로 나열하는 방법은 무엇입니까?

저는 JH1이 HH : MM 시간까지 완료되었습니다. 이 작업 J1에서 생성 한 모든 파일을 나열하고 싶습니다. 파일의 패턴이 YYYYMMDDHHMMSS_입니까?

여기서 YYYYMMDD는 날짜, HHMMSS는 시스템 시간 소인입니다. 작업의 타임 스탬프가 파일 타임 스탬프보다 작 으면 파일을 나열하고 싶습니다. 작업이 파일을 생성 할 때 작업의 타임 스탬프는 파일 타임 스탬프보다 커야합니다.

감사 벤

+0

'find' 명령어를보고'-anewer','-cnewer','-mmin' 등의 테스트를합니다. –

답변

0

당신이 뭔가를 사용할 수 있습니다

$ ls -la 
total 44K 
drwxr-xr-x 2 gp   users 4.0K Oct 27 14:56 . 
drwxr-xr-x 11 gp   users 4.0K Oct 27 14:57 .. 
-rw-r--r-- 1 gp   users 0 Oct 23 14:45 logfile 
-rw-r--r-- 1 gp   users 137 Oct 27 15:09 t2t2 
prw-r--r-- 1 gp   users 0 Oct 23 12:34 testpipe 
-rw-r--r-- 1 gp   users 0 Oct 23 14:51 tmpfile 
-rw-r--r-- 1 gp   users 7 Oct 27 14:58 ttt 

# Find newer files 
$ find . -newer ttt -print 
./t2t2 

# Find files that are NOT newer 
$ find . ! -newer ttt -print 
. 
./tmpfile 
./testpipe 
./logfile 
./ttt 

# You can eliminate the directories (all of them) from the output this way: 
$ find . ! -newer ttt ! -type d -print 
./tmpfile 
./testpipe 
./logfile 
./ttt 
# or this way 
$ find . ! -newer ttt -type f -print 

주 (나열된 파일을 가정하면) 그 (anewer, cnewer 같은)은 "새로운"옵션의 다른 형태는하지 않습니다 다른 파일을 동일한 타임 스탬프와 비교하십시오. 어떤 버전이 더 적합한 지 확인하려면 몇 가지 테스트를해야 할 수도 있습니다.

파일 이름에 타임 스탬프를 사용해야하고 "mmin"을 포함한 "find"의 다른 옵션을 사용할 수없는 경우 각 파일 이름의 포함 된 타임 스탬프를 검사해야합니다.

# You have to escape the <of> signs you use. 
$ expr "fabc" \< "cde" 
0 
$ expr "abc" \< "cde" 
1 

을이 : 나는이 명령에 확인하시기 바랍니다 모든 파일 이름을보고하고, 위의 "EXPR"을 사용하여 자신의 타임 스탬프를 비교, 루프를 "읽는 동안"

FILENAME="ABC_20141026101112.log" ; TIMESTAMP="`expr \"$FILENAME\" : \".*_20\([0-9]\{12\}\).*$\"`";echo $TIMESTAMP 

는 따라서해야 비교 그 일을해라. 이상적으로는 각 파일을 읽고 검토하는 것이 느려지므로 "찾기"가 작업을 수행 할 수 있는지 확인하려고합니다. 해당 디렉토리에 수천 개의 파일이 있다면 다른 해결책을 시도 할 것입니다. 더 많은 옵션에 관심이 있으시면 알려주십시오.