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