첫 번째 Linux 코딩 작업입니다.
저는 서버의 모든 폴더를 순회하고 X일(약 20일)이 지난 모든 파일을 삭제하는 시간 제한 작업에 대한 스크립트를 작성해 달라는 요청을 받았습니다.
내 집 Redhat 컴퓨터에서 아래 코드를 테스트했습니다.
물론 이 코드를 실제로 사용하기 전에는 많은 두려움이 있었습니다. 아래 코드는 잘 작동하지만 "X"일 이내에 파일(디렉토리 아님)만 삭제하는 데도 필요합니다.
시스템의 수백 개의 디렉터리와 수천 개의 파일을 다운로드하거나 수정하는 것은 불가능합니다. 처음 이 프로그램을 실행했을 때 고객이 파일을 우리 서버에 두고 잊어버렸기 때문에 10,000개 이상의 파일이 삭제될 것으로 예상했습니다. (이것이 그들을 깨울 것이다!)
다섯 번째 줄 "elif [ -f "$i" 를 변경해 보았습니다.-a -m시간 +21];Then" - 파일 삭제(rm -i "$1")
작동하지 않습니다. "[:mtime:binary 연산자가 필요합니다."라고 표시됩니다.
또 다른 elif 문이 필요합니까, 아니면 선택 기준("X"일보다 오래된 파일만)이 한 줄에서 작동하도록 할 수 있습니까?
암호:
#!/bin/bash
print_folder_recurse() {
for i in "$1"/*; do
if [ -d "$i" ]; then
print_folder_recurse "$i"
elif [ -f "$i" ]; then
rm -i $i #(put the -i in there for #testing, it will be removed)
fi
done
}
경로 "/go/to/your/happy/place"
echo "Delete path: $path"
print_folder_recurse $path
감사해요.
답변1
find /your/directory -type f -daystart -mtime +20 -delete
-delete
테스트 실행을 수행하려면 삭제하세요 .