2013-02-23 2 views
2

이하 Unix 명령은 완벽하게 작동하는 마지막 30 분 수정 된 파일 목록을 얻는 데 사용됩니다.파일을 Gzip하고 홈 디렉토리로 이동하는 Unix 명령

touch -t 02231249.00 /tmp/last30min 
find /mydirectory -type f -newer /tmp/last30min 
rm /tmp/last30min 

은 누군가가 나에게 그 파일을 gzip을하고 가정이나 tmp 디렉토리로 이동하는 명령을 제공하십시오 수 있습니다.

도움 주셔서 감사합니다 !!!.

+2

'gzip && mv .gz ~' –

답변

2

파이프 xargs에 (당신의 파일 이름은 공백을 포함하는 경우 중요) null 문자로 구분하여 find 명령의 인수 작업을 수행하는 -I{} 입력하여 명령의 모든 {}을 대체 할 xargs을 알려줍니다

find /mydirectory -type f -newer /tmp/last30min -print0 | xargs -0 -I{} sh -c 'gzip "{}"; mv "{}".gz ~' 

즉, 현재 파일은 find입니다.

다음
for i (/mydirectory/**/*(mm-30)) { gzip $i && mv $i.gz ~ } 

** 검색 반복적으로, 그리고 (mm-30) 마지막에 odified m을 의미

당신은 Z 쉘 (zsh)를 사용하는 경우, 그것은 훨씬 더 선웃음, 모든 것이 oneliner에서 할 수 있어요 (-) 30 m inutes.

1

터치 명령은 내가 타임 스탬프를 확인, 제대로 작동하지 않고 그들이 내 시간대에 대해 다음 날짜이다 :이 명령은

를 요구하고 무엇을 할 것인가 생각

$ touch -t 02231249.00 /tmp/last30min 
$ perl -e'print scalar localtime((stat("/tmp/last30min"))[9])' 
Sat Feb 23 12:49:00 [email protected]:~/temp$ 

for f in `find . -mmin -30 -print`;do echo $f;gzip -c $f > $HOME/$f.gz;done 
관련 문제