폴더에서 7일보다 오래된 4자리 숫자의 파일을 검색하는 BASH 스크립트

폴더에서 7일보다 오래된 4자리 숫자의 파일을 검색하는 BASH 스크립트
#!/bin/bash

unset result
result=$(find /home -path "$HOME/TestDir/[0-9][0-9][0-9][0-9]/test*" -mtime -7 -print -delete 2>/dev/null)
[ "$result" ] || echo "There are no recovery files older than 7 days"

/test부분에서는 실제로 2개의 파일 이름을 찾아야 합니다. 으로 시작하는 것과 E*로 시작하는 것 P_*. 이것이 가능합니까?

답변1

~에서사람들이 발견했습니다

종료 상태
찾다모든 파일이 성공적으로 처리되면 상태 0으로 종료하고, 오류가 발생하면 0보다 큰 상태로 종료합니다. 이는 의도적으로 매우 광범위한 설명이지만 반환 값이 0이 아닌 경우 결과의 정확성에 의존해서는 안 됩니다.찾다

따라서 일치하는 파일이 없으면 종료 상태는 0으로 유지됩니다. 따라서 출력이 비어 있는지 확인하는 것이 좋습니다.

unset result
result=$(find ~/TestDir -path "$HOME/TestDir/[0-9][0-9][0-9][0-9]/test*" -mtime -7 -print -delete 2>/dev/null)
[ "$result" ] || echo "There are no recovery files older than 7 days"

답변2

find $(find -name "[0-9][0-9][0-9][0-9]") -name "[test]*" -mtime -7 -exec rm -i {} \; || echo "There are no recovery files older than 7 days"

이것 ||(또는) 연산자는 왼쪽 명령의 결과를 보고 왼쪽 명령이 실패한 경우에만(반환 코드를 기준으로) 오른쪽 명령을 실행합니다.

find가 일치하는 파일을 찾지 못하면 1을 반환하고 ||run이 명령을 실행 하게 됩니다 echo.

관련 정보