X일 이후에 숫자/초로 끝나는 모든 파일을 삭제하는 방법

X일 이후에 숫자/초로 끝나는 모든 파일을 삭제하는 방법

2자리, 3자리 등 숫자 이상의 숫자로 끝나는 모든 파일을 삭제하고 싶습니다.

참고 - 파일이 number 로 끝나면 이 파일이 회전되었으며 실제로 고유한 번호로 백업되었음을 알려줍니다.

-rw-r--r--  1 kafka hadoop    73668 Aug  5 07:56 controller.log.2018-08-05-07
-rw-r--r--  1 kafka hadoop    73668 Aug  5 08:56 controller.log.2018-08-05-08
-rw-r--r--  1 kafka hadoop   658893 Aug  7 11:53 controller.log.3
-rw-r--r--  1 kafka hadoop     1092 Aug  7 14:35 controller.log.2
-rw-r--r--  1 kafka hadoop  2750003 Aug  7 14:52 state-change.log.2018-08-07-14
-rw-r--r--  1 kafka hadoop     3678 Aug  7 14:52 log-cleaner.log.2018-08-07-14
-rw-r--r--  1 kafka hadoop   199094 Aug  7 14:52 controller.log.2018-08-07-14
-rw-r--r--. 1 kafka hadoop    24431 Aug  7 15:07 kafka.err
-rw-r--r--  1 kafka hadoop     1147 Aug  7 16:02 server.log.10
-rw-r--r--  1 kafka hadoop     1061 Aug  7 16:02 server.log.9
-rw-r--r--  1 kafka hadoop   135465 Aug  7 16:07 server.log.8
-rw-r--r--  1 kafka hadoop    10278 Aug  7 16:07 server.log.7
-rw-r--r--  1 kafka hadoop    10350 Aug  7 16:07 server.log.6
-rw-r--r--  1 kafka hadoop    10353 Aug  7 16:07 server.log.5
-rw-r--r--  1 kafka hadoop    10322 Aug  7 16:07 server.log.4
-rw-r--r--  1 kafka hadoop     1272 Aug  7 16:07 log-cleaner.log
-rw-r--r--  1 kafka hadoop   473322 Aug  7 16:07 controller.log.1
-rw-r--r--  1 kafka hadoop      170 Aug  7 16:07 controller.log

예상 결과:

-rw-r--r--. 1 kafka hadoop    24431 Aug  7 15:07 kafka.err
-rw-r--r--  1 kafka hadoop     1272 Aug  7 16:07 log-cleaner.log
-rw-r--r--  1 kafka hadoop      170 Aug  7 16:07 controller.log

이 옵션을 시도했지만 이 옵션이 작동하지 않습니다

 find . -type f  -mtime +6   -name '*[0-9]'  -print -delete

올바른 구문을 작성하도록 도와주세요.

답변1

-regex에 대한 매개변수를 사용해야 합니다 find.

find . -type f  -mtime +6 -regex '^.*[0-9]$' -print -delete

이렇게 하면 숫자로 끝나는 모든 파일을 일치시키고 삭제합니다(예를 들어 일부 확장자도 숫자로 끝날 수 있다는 점에 유의하세요 .mp4).

또한 -mtime부동 소수점 숫자를 지원하지 않으며 항상 다음 날로 반올림됩니다. 따라서 최소 6일 전에 수정된 파일을 삭제하려면 -mtime +5.

답변2

올바른 구문을 작성하도록 도와주세요.

사용한 것:

find . -type f  -mtime +6   -name '*[0-9]'  -print -delete

~이다주의 사항이 거의 없는 올바른 구문:

  1. -delete휴대용이 아닙니다. 일반적으로 구현에서는 find이를 지원할 수도 있고 지원하지 않을 수도 있습니다. 휴대용에 해당하는 것은-exec rm {} \;.

  2. -name구형과 같은 패턴을 사용합니다. 지역에 [0-9]따라아니면 그렇지 않을 수도 있다정확히 원하는 것을 의미합니다. ASCII 십진수와 다른 집합의 문자와 일치할 수 있습니다(예: 일치할 수 있음).

관련 정보