파일 이름의 숫자 부분이 주어진 숫자보다 큰 경우 파일을 삭제하는 방법은 무엇입니까?

파일 이름의 숫자 부분이 주어진 숫자보다 큰 경우 파일을 삭제하는 방법은 무엇입니까?

다음과 같은 파일이 있습니다.

cap_20151023T122915_791033959.png
cap_20151023T122918_946392456.png
cap_20151023T122920_227637228.png
cap_20151023T122920_875467456.png

find이 명령을 사용하여 다음보다 큰 항목을 삭제하고 싶습니다 . 예를 들어 이렇게 하면 합계가 삭제 cap_20151023T122919*됩니다 .cap_20151023T122920_227637228.pngcap_20151023T122920_875467456.png

명령 을 사용하여 이를 수행할 수 있는 방법이 있습니까 find?

답변1

그리고 zsh그리고<[x]-[y]> 글로벌 운영자(범위 내 숫자와 일치(포함 x); y두 숫자 중 하나를 생략하여 범위를 열어 둘 수 있습니다.) 예를 들면 다음과 같습니다.

print -rl -- **/cap_20151023T<122920->_*

122920-999999또는 파일 이름 범위 만 선택하려는 경우 :

print -rl -- **/cap_20151023T<122920-999999>_*

따라서 파일 이름은 다음과 같습니다.

tmp/cap_20151023T122915_791033959.png
tmp/cap_20151023T122915791_959.png
tmp/cap_20151023T122918_946392456.png
tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T1229205_875467456.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

첫 번째는 다음과 같이 인쇄됩니다.

tmp/cap_20151023T122915791_959.png
tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T1229205_875467456.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

그리고 두 번째는 다음과 같이 인쇄됩니다.

tmp/cap_20151023T122920_227637228.png
tmp/cap_20151023T122920_875467456.png
tmp/cap_20151023T122980_227637228.png

결과가 만족스러우면 다음 print -rl으로 교체하세요.rm -f

답변2

최적은 아니지만 다음과 같이 작동합니다.

find /where/is/search/folder -name "cap_20151023T1229[2-9]*" -exec rm '{}' \;

괄호 안의 숫자를 제거해야 하는 숫자로 바꾸고 필요한 경우 위치를 변경하면 됩니다.

관련 정보