Commit aeba5156 authored by platyhouse's avatar platyhouse

.

parent 27d5c851
...@@ -34,6 +34,7 @@ show_usage() { ...@@ -34,6 +34,7 @@ show_usage() {
echo " -l 상세 정보 표시 (ls -lh 형식)" echo " -l 상세 정보 표시 (ls -lh 형식)"
echo " -maxdepth N 검색 깊이 제한 (1: 현재 디렉토리만)" echo " -maxdepth N 검색 깊이 제한 (1: 현재 디렉토리만)"
echo " -count 개수만 표시" echo " -count 개수만 표시"
echo " --delete 검색된 파일/디렉토리 삭제 (확인 후 실행)"
echo "" echo ""
echo "예제:" echo "예제:"
echo " $0 '*.log' -d 10 # 현재 디렉토리의 .log 파일 중 10일 이상 지난 파일" echo " $0 '*.log' -d 10 # 현재 디렉토리의 .log 파일 중 10일 이상 지난 파일"
...@@ -48,6 +49,7 @@ show_usage() { ...@@ -48,6 +49,7 @@ show_usage() {
echo " $0 '*.sh' -perm 777 # 현재 디렉토리의 .sh 파일 중 777 권한" echo " $0 '*.sh' -perm 777 # 현재 디렉토리의 .sh 파일 중 777 권한"
echo " $0 '*.log' -r -d 30 -s # 하위까지 .log 파일 중 30일 이상, 크기 표시" echo " $0 '*.log' -r -d 30 -s # 하위까지 .log 파일 중 30일 이상, 크기 표시"
echo " $0 './*' -maxdepth 2 -zerofiles # 최대 2단계 깊이까지 0바이트 파일" echo " $0 './*' -maxdepth 2 -zerofiles # 최대 2단계 깊이까지 0바이트 파일"
echo " $0 '*.log' -d 30 --delete # 30일 이상 지난 .log 파일 삭제"
exit 1 exit 1
} }
...@@ -97,6 +99,7 @@ FILE_USER="" ...@@ -97,6 +99,7 @@ FILE_USER=""
FILE_PERM="" FILE_PERM=""
MAX_DEPTH="1" MAX_DEPTH="1"
RECURSIVE=false RECURSIVE=false
DELETE_MODE=false
# 옵션 파싱 # 옵션 파싱
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
...@@ -161,6 +164,10 @@ while [[ $# -gt 0 ]]; do ...@@ -161,6 +164,10 @@ while [[ $# -gt 0 ]]; do
SHOW_COUNT=true SHOW_COUNT=true
shift shift
;; ;;
--delete)
DELETE_MODE=true
shift
;;
-help|--help) -help|--help)
show_usage show_usage
;; ;;
...@@ -322,4 +329,64 @@ if [ "$SEARCH_MODE" != "emptydir" ] && ([ "$FILE_TYPE" = "f" ] || [ -z "$FILE_TY ...@@ -322,4 +329,64 @@ if [ "$SEARCH_MODE" != "emptydir" ] && ([ "$FILE_TYPE" = "f" ] || [ -z "$FILE_TY
fi fi
fi fi
# 삭제 모드 처리
if [ "$DELETE_MODE" = true ]; then
if [ "$COUNT" -eq 0 ]; then
echo ""
echo "삭제할 항목이 없습니다."
exit 0
fi
echo ""
echo "============================================"
echo "경고: 위의 ${COUNT}개 항목을 삭제하시겠습니까?"
echo "============================================"
read -p "삭제하시겠습니까? (y/N): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo ""
echo "삭제 중..."
DELETED_COUNT=0
FAILED_COUNT=0
# 파일 목록을 배열로 저장
mapfile -t FILES_TO_DELETE < <(eval $FIND_CMD 2>/dev/null)
# 각 파일/디렉토리 삭제
for item in "${FILES_TO_DELETE[@]}"; do
if [ -d "$item" ]; then
# 디렉토리인 경우
if rmdir "$item" 2>/dev/null; then
echo "삭제됨: $item"
((DELETED_COUNT++))
else
echo "삭제 실패: $item (디렉토리가 비어있지 않거나 권한 부족)"
((FAILED_COUNT++))
fi
else
# 파일인 경우
if rm -f "$item" 2>/dev/null; then
echo "삭제됨: $item"
((DELETED_COUNT++))
else
echo "삭제 실패: $item (권한 부족)"
((FAILED_COUNT++))
fi
fi
done
echo ""
echo "============================================"
echo "삭제 완료: ${DELETED_COUNT}개 항목"
if [ "$FAILED_COUNT" -gt 0 ]; then
echo "삭제 실패: ${FAILED_COUNT}개 항목"
fi
echo "============================================"
else
echo ""
echo "삭제가 취소되었습니다."
fi
fi
exit 0 exit 0
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment