파일 이름에 숫자가 있고 ‘x’와 숫자가 적어도 두 번 오는 모든 하위 디렉토리의 모든 파일을 재귀 적으로 제거해야합니다.
예:
이 파일들을 제거하고 싶습니다 :
'aaa-12x123-123x12.jpg'
'aaa-12x12-123x12-12x123.jpg'
그러나 이러한 파일을 제거하고 싶지 않습니다.
'aaa.jpg'
'aaa-12x12.jpg'
'aaaxaaa-123x123.jpg'
'aaaxaaa-aaaxaaa.jpg'
bash 쉘에서 어떻게 할 수 있습니까?
답변
문자열 x
에 숫자와 뒤에 숫자가 포함 된 경우에만 ( x
즉, 패턴과 일치하는 하위 문자열이 포함 된 경우) “숫자 뒤에 숫자”가 포함 [0-9]x[0-9]
됩니다. 따라서 이름이 pattern과 일치하는 파일을 제거하려고합니다 *[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 {} +
답변
올바른 명령은 다음과 같습니다.
find . -type f -iregex '.*[0-9]x[0-9]*\.jpg$'
이름이 ‘aaa-12×12.jpg’인 파일 만 가져오고 ‘aaa-12x12red.jpg’는 가져 오지 않습니다.