디렉토리 구조를 그대로 유지하면서 특정 시간보다 오래된 특정 디렉토리의 모든 파일을 시스템에서 삭제하는 방법은 무엇입니까? 재귀 적으로 삭제하도록 모든

나는 내 컴퓨터에 디렉토리를 가지고 있는데, 그것을 내 자신의 tmp디렉토리 로 생각 하지만 내 ~디렉토리에 있습니다. 그리고 3 시간마다 시스템이 하루보다 오래된 디렉토리의 디렉토리를 그대로 유지하면서 디렉토리의 모든 수준에서 모든 파일을 재귀 적으로 삭제하도록 모든 파일을 삭제하도록하고 싶습니다.

그놈 3.18과 함께 우분투 그놈 15.10을 실행하고 있습니다.이 작업을 수행 할 수 있습니까? 그렇다면 어떻게? 사용자 상호 작용이 필요하지 않은 완전 자동화를 원합니다. 이것은 로그인 할 때 자동으로 시작되어야하므로 시작할 때마다 무언가를 실행할 필요가 없습니다.



답변

사용 find:

find ~/tmp -type f -mtime +0 -delete
  • ~/tmp 재귀 적으로 검색되는 디렉토리입니다. 이에 따라 변경하십시오.

  • -type f 파일 만 찾습니다

  • -mtime +0 파일이 하루 이상 마지막으로 수정 된 경우 파일과 일치합니다.

  • -delete 일치하는 파일을 제거합니다.

여기서 catch는 -mtime +0, 대부분 사용을 생각할 수 -mtime +1있지만 find일을 계산하는 동안 소수 시간을 무시합니다. 따라서 -mtime +1최소 2 일 전에 마지막으로 수정 한 경우 파일과 일치합니다.

인용 man find, -mtime동일한 타이밍 규칙 등이있다 -atime:

-시간 n

파일은 마지막으로 n * 24 시간 전에 액세스되었습니다. 파일에 마지막으로 액세스 한 24 시간 동안의 수를 알아낼 때 소수 부분은 무시되므로 -atime +1과 일치 시키려면 파일이 최소 2 일 전에 액세스되어야합니다.

또한 정밀도를 원하면 시간을 분 단위로 표시 하는 -mmin옵션을 확인 해야합니다 find.

3 시간 후에 정기적으로 실행하기 위해 cron항목을 추가 할 수 있습니다 .

실행 crontab -e하고 추가하십시오.

00 */3 * * * /usr/bin/find ~/tmp -type f -mtime +0 -delete

zsh파일을 제거하는 데 사용 :

rm ~/tmp/**/*(.-m+0)

추가 cron:

00 */3 * * * /usr/bin/zsh -c 'rm ~/tmp/**/*(.-m+0)'


답변

1 일이 지난 파일 /home/username/directory과 그 아래의 모든 디렉토리는 다음을 사용 하여 삭제할 수 있어야합니다 .

find /home/username/directory -type f -mtime +1 -delete

그리고 3 시간마다 해당 명령을 예약하려면 cron 작업으로 설정하십시오.

crontab -e

그런 다음 crontab 내부에서

0 */3 * * * find /home/username/directory -type f -mtime +1 -delete

어느 시간에 3 시간마다 (즉, 0 분) 명령을 실행하므로 오전 3시, 오전 6시 등

에 대한 자세한 내용을 보려면 croncrontab manpages로 이동하십시오 .


답변