폴더의 파일을 삭제하려면 다음 명령을 사용하고 있습니다. 하지만 내 명령은 모든 것을 삭제하는 것입니다.
ionice -c 3 find . -type f -print -delete
접미사가 있으면 파일을 삭제하고 싶지 않습니다 _y
.
내 폴더 보기는 다음과 같습니다.
123a.jpg -> Should delete
4567.jpg -> Should delete
7644_y.png -> Should not delete
12234_y.jpeg -> Should not delete
5753.jpg -> Should delete
내 명령이 이를 어떻게 달성해야 합니까?
답변1
귀하의 예에 따르면 다음을 포함하는 이름을 제외하고 싶습니다._y
하위 문자열.
find . -type f ! -name '*_y*' -print -delete
( ionice -c 3
원한다면 앞에 사용해도 되지만, 무엇을 하든 상관없습니다 find
.)
_y
기본 이름 끝에 만 파일을 보관하려면 (따라서 12234_y_.jpeg
삭제됨) 다음을 사용할 수 있습니다.
find . -type f ! -name '*_y.*' -print -delete
답변2
재귀 하위 디렉터리를 구체적으로 사용하는 경우에는 find
이 답변이 적용되지 않습니다. 그러나 현재 디렉터리의 파일만 삭제하는 경우 bash 관련 옵션은 다음과 같습니다.
shopt -s extglob
rm -v !(*_y.*)
이는 패턴과 일치하는 비파일(디렉토리)을 삭제하려고 시도하는 추가적인 제한이 있습니다.