파일 이름에 숫자, "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"는 가져오지 않습니다.