Linux에서 find 명령을 사용하여 두 가지 조건을 실행하는 방법

Linux에서 find 명령을 사용하여 두 가지 조건을 실행하는 방법

5일이 지난 파일(로그 파일)을 삭제하려고 하는데, 삭제하지 않고 특정 파일만 보관해야 하는데, 다음을 사용해 보았습니다.

find . -type f -mtime +5 ! -name 'test2' -exec rm -f {} \;

그러나 이는 성공하지 못했습니다. 제가 사용하는 운영체제는 Centos 7 입니다.

답변1

보시다시피 테스트를 위해 다음 구조를 만들었습니다.

mkdir test && cd test && touch file1 file2 file3 lol test2
touch -t 200805101024 file*

이것을 얻으세요:

ls -la
total 8
drwxr-xr-x 2 root   root   4096 Oct 13 18:09 .
drwxr-xr-x 4 phphil phphil 4096 Oct 13 18:09 ..
-rw-r--r-- 1 root   root      0 May 10  2008 file1
-rw-r--r-- 1 root   root      0 May 10  2008 file2
-rw-r--r-- 1 root   root      0 May 10  2008 file3
-rw-r--r-- 1 root   root      0 Oct 13 18:09 lol
-rw-r--r-- 1 root   root      0 Oct 13 18:09 test2

올바른 명령을 실행한 후:

find . -type f -mtime +5 ! -name 'test2' -exec rm -f {} \;

상황은 예상대로입니다.

ls -la
total 8
drwxr-xr-x 2 root   root   4096 Oct 13 18:09 .
drwxr-xr-x 4 phphil phphil 4096 Oct 13 18:09 ..
-rw-r--r-- 1 root   root      0 Oct 13 18:09 lol
-rw-r--r-- 1 root   root      0 Oct 13 18:09 test2

편집: 명령 또는 명령 매개변수에 대한 정보를 찾습니다.

명령 및/또는 매개변수의 동작이 확실하지 않은 경우 다음 단계를 따릅니다.

man find | less

그런 다음 다음과 같이 원하는 내용에 대한 명령 설명서를 검색할 수 있습니다.

  • 유형/
  • 내가 생각하는 검색어를 적어보세요-mtime
  • 그런 다음 을 입력하여 다음 검색 용어로 이동 N하거나 을 입력하여 이전 검색 용어로 이동할 수 있습니다.n

나는 다음과 같은 흥미로운 정보를 발견했습니다.

   -mtime n
          File's data was last modified n*24 hours ago.  See the comments for -atime to understand how  round‐
          ing affects the interpretation of file modification times.

관련 정보