패턴과 일치하는 파일 삭제

패턴과 일치하는 파일 삭제

파일 이름에 숫자, "x", 숫자가 차례로 포함된 모든 하위 디렉터리의 모든 파일을 적어도 두 번 반복적으로 삭제해야 합니다.

예:

다음 파일을 삭제하고 싶습니다.

'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'

하지만 다음 파일은 삭제하고 싶지 않습니다.

'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'

어떻게 해야 하나요?(bash 쉘에서)

답변1

문자열은 숫자 뒤에 숫자가 포함된 경우 , 즉 패턴과 일치하는 하위 문자열이 포함된 x경우에만 "숫자 뒤에 숫자" 가 포함됩니다 . 따라서 이름이 패턴과 일치하는 파일을 삭제하려고 합니다 .x[0-9]x[0-9]*[0-9]x[0-9]*[0-9]x[0-9]*.jpg

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -delete

find파일이 없으면 전화 -delete하여 rm파일을 삭제하세요.

find /path/to/directory -type f -name '*[0-9]x[0-9]*[0-9]x[0-9]*.jpg' -exec rm {} +

답변2

올바른 명령은 다음과 같습니다:

find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'

이렇게 하면 이름이 "aaa-12x12.jpg"인 파일만 가져오고 "aaa-12x12red.jpg"는 가져오지 않습니다.

관련 정보