저는 명령 옵션이 제한된 IBM AIX Unix를 사용하고 있습니다. find 및 mtime(유효) 옵션을 사용하여 다음 필터 조건을 달성하고 싶습니다. 다음 필터에 나열된 파일을 삭제하고 싶습니다.
- 숫자 [0-9]로 시작하는 파일
- ".dat"로 끝남
- 기간: 2018년 8월 1일부터 2018년 10월 15일까지
find 명령을 사용해 보았지만 별로 도움이 되지 않았습니다.
find /mydirectory -type f -mtime -45 -mtime +5
답변1
이 find
명령은 다음을 찾습니다.파일이나 그런 것그리고콘텐츠가 마지막으로 수정된 지 45일이 지나지 않았습니다.그리고콘텐츠가 마지막으로 수정된 지 5일이 넘었습니다.. ("AND"는 데이터 세트를 제한하는 것이지 증폭하는 것이 아닙니다. 원하는 경우 "that are also"로 읽을 수 있습니다.)
절대 날짜 범위와 일치했다고 가정하면 이제 지정한 조건 집합을 완료하는 절을 추가하기만 하면 됩니다.
find /mydirectory -type f -mtime -45 -mtime +5 -name '[0-9]*' -name '*.dat'
약간의 최적화를 통해 이 두 가지 명명 표준은
- 숫자 [0-9]로 시작하는 파일
- ".dat"로 끝남
단일 명령문으로 결합할 수 있습니다.
- glob과 일치하는 파일("쉘 와일드카드 패턴")
[0-9]*.dat
마지막으로 "일치하는 파일 삭제“Action을 구현하는 데 사용할 수 rm -f
있으며 이를 통해 필요한 솔루션을 찾을 수 있습니다.
find /mydirectory -type f -mtime -45 -mtime +5 -name '[0-9]*.dat' -exec echo rm -f {} \;
예상대로 파일이 선택되는 것을 보면 인쇄하는 대신 echo
명령이 실행되도록 명령에서 제거하는 것을 기억하십시오.rm
.
답변2
날짜가 고정되어 있으면 날짜와 관계없이 해당 범위의 수정 날짜가 있는 파일을 삭제하겠다는 의미입니다.언제명령을 실행한 다음 사용할 수 있습니다.touch
주문하다참조 파일을 생성하고find
~의 -newer
술어 제한 결과:
touch -t 201807312359.59 /tmp/oldest-file
touch -t 201810152359.59 /tmp/newest-file
find /mydirectory -type f -newer /tmp/oldest-file ! -newer /tmp/newest-file -name '[0-9]*.dat' -exec rm {} \;