![폴더에서 7일보다 오래된 4자리 숫자의 파일을 검색하는 BASH 스크립트](https://linux55.com/image/69606/%ED%8F%B4%EB%8D%94%EC%97%90%EC%84%9C%207%EC%9D%BC%EB%B3%B4%EB%8B%A4%20%EC%98%A4%EB%9E%98%EB%90%9C%204%EC%9E%90%EB%A6%AC%20%EC%88%AB%EC%9E%90%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EA%B2%80%EC%83%89%ED%95%98%EB%8A%94%20BASH%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
#!/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
.