Linux - 마지막 두 파일 자동 삭제

Linux - 마지막 두 파일 자동 삭제

Linux에서는 매일 아침 폴더가 하나 생성되고 그 폴더에 5개의 파일이 생성됩니다.

하루가 끝나면(자정) 폴더의 마지막 두 파일을 삭제해야 합니다. 어떻게 해야 하나요?

답변1

더 이상 정보를 모르더라도 이 명령을 사용하여 디렉터리의 마지막 2개 파일을 선택하고 삭제할 수 있습니다. 이는 마지막 2개 파일을 수정하거나 삭제한다고 가정합니다.

$ ls -t | head -n 2 | xargs rm -f

나에게 이런 파일이 있다고 가정해보자.

$ seq 5 | xargs -n 1 touch
$ ls -ltr
total 0
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 1
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 2
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 3
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 4
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 5

을 사용하면 ls -t | head -n 2마지막으로 수정된 두 파일이 제공됩니다.

$ ls -t | head -n 2
5
4

전달하여 xargs rm -f삭제할 수 있습니다.

$ ls -t | head -n 2 | xargs rm -f
$ ls -tr
total 0
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 1
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 2
-rw-rw-r--. 1 saml saml 0 Jun  5 04:01 3

답변2

zsh 사용

rm -f -- *(D.om[1,2])

현재 디렉터리에서 최신(마지막 수정 기준) 일반 파일 2개를 삭제합니다.

GNU 도구 사용:

eval "files=($(ls -At --quoting-style=shell-always))"
n=2
for f in "${files[@]}"; do
  if [[ -f $f && ! -L $f ]]; then
    rm -f -- "$f"
    ((--n)) || break
  fi
done

관련 정보