
항상 다음과 같은 최소 5개의 숫자 값으로 시작하는 일련의 파일이 있습니다.
85966_88.jpg
이 답변을 사용하여 나는 배웠습니다.명령에서 find 및 regextype을 사용하여 다음과 같이 파일을 삭제합니다.
find . -regextype posix-extended -iregex './a_[0-9]{6}' -execdir bash -c '[[ ${1##./a_} > 000750 ]] && echo $1' "removing: " {} \;
나는 이 명령을 내 필요에 맞게 다음과 같이 변경했습니다.
find . -regextype posix-extended -iregex './[0-9]{5}' -execdir bash -c '[[ ${1##./} > 000001 ]] && echo $1' "removing: " {} \;
명령을 실행했는데 파일이 삭제되지 않습니다. 처음 5자리에 숫자 값이 있는 .jpg를 모두 제거한 다음 _를 제거하는 방법을 알 수 없습니다.
답변1
첫째, 명령쓰여진대로아무것도 삭제하지 않습니다. 귀하가 연결한 답변에 언급된 대로
명령 을 사용하여 이를 테스트
echo
하고 올바른 파일이 나열되어 있다고 확신하면rm
대신 사용하십시오.
둘째, 제거를 일치 항목의 범위 또는 하위 집합으로 제한하고 싶지 않기 때문에 (쉘 테스트 항목이 필요하지 않음) 귀하의 경우에 비해 지나치게 복잡합니다. 간단히 할 수 있습니다
find -regextype egrep -regex '.*/[0-9]{5}_.*\.jpg' -print
(테스트를 위해) 만족스러우면 제대로 작동하는지 -print
교체 하세요 .-delete
그러나 정규식조차도 지나치게 복잡해 보입니다. 간단한 glob 일치는 실제로 타이핑이 적습니다.
find -name '[0-9][0-9][0-9][0-9][0-9]_*.jpg' -print
(다시 확실할 때 -print
로 교체하십시오).-delete
재귀적으로 검색할 필요가 없으면 간단한 쉘 glob이 작동합니다.
rm -i [0-9][0-9][0-9][0-9][0-9]_*.jpg