find 명령을 사용하여 파일을 얻는 방법

find 명령을 사용하여 파일을 얻는 방법

AIX에서 find 명령을 사용하여 현재 디렉토리에서 하루보다 오래된 파일만 가져오는 방법(하위 디렉토리 및 해당 파일 제외)은 무엇입니까?

답변1

findUnix에서의 구현에 -maxdepth조건자(비표준이지만 일반적으로 사용 가능)가 있다고 가정하면 다음 find명령이 이 작업을 수행합니다.

find . -maxdepth 1 -type f -mtime +0

그러면 24시간 이상 전의 수정 타임스탬프와 함께 일반 파일(예: 디렉토리, 소켓, 명명된 파이프 등이 아닌)의 이름이 터미널에 인쇄됩니다.

-maxdepth사용할 수 없다면 고려 해보세요

find . ! -name . -prune -type f -mtime +0 -print

이는 다음을 의미합니다.

  1. find현재 보고 계시 다면아니요 .( ! -name .), 현재 디렉토리
  2. 치다find( ) 검색 경로 -prune. 이것도 find멈춘다고려하면하위 디렉터리를 입력하세요.
  3. 파일이 일반 파일( -type f) 인 경우
  4. 수정 타임스탬프가 24시간( -mtime +0) 보다 오래된 경우
  5. 우리가 발견한 것의 이름을 쓰세요 ( -print).

정보 -mtime +0: AIX 시스템에서는 다음을 참조하세요.의미론에 대한 참고 사항-mtime-mtime +0또는 를 사용할지 결정합니다 -mtime +1. UNIX03 동작을 원할 경우 수정 타임스탬프가 24시간보다 오래된 파일 찾기를 사용해야 합니다 (그리고 매뉴얼에 명시된 대로 환경 변수를 와 로 설정 -mtime +0해야 합니다 XPG_SUS_ENV) .ONXPG_UNIX98OFF

기본적으로 find출력은경로명파일을 찾았습니다. 즉, ./위 명령에서 접두사가 붙은 파일 이름을 얻게 됩니다. 이를 원하지 않으면 basename발견된 각 파일 이름에 대해 유틸리티를 호출해야 합니다.

다음을 수행할 수 있습니다.

find . ! -name . -prune -type f -mtime +0 -exec basename {} \;

댓글에서이 파일을 압축하고 싶다고 말씀하셨습니다. 이를 위해 유틸리티를 호출할 필요가 없습니다 basename. 그냥 호출하세요 gzip(또는 사용하고 싶은 압축 유틸리티):

find . ! -name . -prune -type f -mtime +0 -exec gzip {} +

이러한 파일을 사용하여 추가 작업을 수행할지 여부에 따라 이 사이트에서 유사한 질문을 찾아볼 수 있습니다.찾기 결과를 반복하는 것이 왜 나쁜 습관입니까?

또한 관련:

관련 정보