thumbnail-name_WIDTHxLENGTH.{jpg,png}
하위 디렉터리가 포함된 디렉터리가 있고 이름이 where WIDTH
및 LENGTH
이며 모두 10진수인 box-image-150x150.jpg
이미지 를 삭제하고 싶습니다 circle-image-320x320.png
. 따라서 기본적으로 x
숫자가 포함된 jpg/png 입니다 .
답변1
# Old school way for directory-walking: find (emacs regex; use `(jpg|png)` on BSD find)
# use -iregex for case-insensitive
find some/dir -regex '.*[0-9]+x[0-9]+.\(jpg\|png\)' -delete
# ksh93, zsh & bash: globstar + brace expansion + extglob
# for ksh, use `set -o globstar` first; for bash, use `shopt -s globstar extglob nullglob` first.
# TODO: Too lazy to write zsh cshnullglob and case-insensitive globs
rm -- **/*[0-9]x+([0-9]).{jpg,png}
답변2
"정규식"이라는 용어는 (일반적으로) 명령줄에서 파일을 선택하는 데 적용되지 않습니다. 1 기술 용어는 와일드카드, 패턴 일치 또는 와일드카드 확장이라고도 하는 경로 이름 확장입니다. 말씀하신 내용을 바탕으로 첫 번째 답변 시도는 다음과 같습니다.
rm -- *[0-9]x[0-9]*
이름이 다음으로 구성된 현재 디렉터리의 모든 파일을 삭제합니다.
- 임의(
*
) 다음에 - 숫자(
[0-9]
), 그 뒤에 - 이 편지
x
뒤에는 - 또 다른 숫자(
[0-9]
), 그 뒤에 - 아무것(
*
).
--
로 끝나는 이름으로부터 당신을 보호 할 수 있습니다 -
. 그렇게 하시기를 강력히 권고합니다.
ls -ld -- *[0-9]x[0-9]*
먼저 어떤 파일이 일치하여 삭제되는지 확인하세요. 일치하는 파일이 원하는 파일이 아닌 경우 를 사용하여 적어도 하나의 세 자리 숫자와 다른 세 자리 숫자를 포함하는 파일 *[0-9][0-9][0-9]x[0-9][0-9][0-9]*
만 가져옵니다 . x
및/또는 해당 확장자를 가진 파일로 명령을 제한하기 위해 .jpg
끝에 추가(즉, 사용 )한 다음 를 사용하여 명령을 반복합니다 . 또는 다음을 사용하십시오.*[0-9]x[0-9]*.jpg
.png
RM-나-- *[0-9]x[0-9]*
rm
각 파일을 확인하라는 메시지가 표시됩니다 .
"디렉토리가 포함된 디렉터리입니다. 모두 jpg가 있습니다." 디렉터리 트리를 검색해야 하는 경우 한 가지 방법은 다음을 입력하는 것입니다.
shopt -u globstar
그런 다음 **/
와일드카드를 추가합니다. 예를 들어 다음과 같습니다.
rm -i -- **/*[0-9]x[0-9]*
하위 디렉터리 트리를 검색하는 또 다른 방법은 다음과 같습니다.
find . -name "*[0-9]x[0-9]*" -type f -exec rm -i -- {} +
다음을 입력하여 이 명령을 "미리 볼" 수 있습니다(어떤 파일이 일치하는지 확인).
find . -name "*[0-9]x[0-9]*" -type f -print
다시 말하지만, 일치하는 파일이 너무 많으면 숫자를 추가하거나 확장자를 추가할 수 있습니다.
노트:
- 명령에서는 와일드카드 문자를 인용해야 합니다
find
. 다른 명령에서는 와일드카드 문자를 인용할 수 없습니다. - 이
find
명령은 이름이 다음으로 시작하는 파일을 자동으로 찾습니다..
. 당신shopt -s dotglob
이 먼저 입력 하지 않는 한, 누구도 그렇게 하지 않을 것입니다 . - 이
find
명령은 일반 파일에서만 작동합니다. 왜냐하면-type f
다른 파일의 이름에 . 하지만 앞서 말했듯이 먼저 실행하고 출력을 다시 확인하거나 입력하기 전에 사용하고 생각하십시오.numberxnumber
rm
ls
rm -i
y
_________
1에는 find
정규식과 일치하는 기능이 있으며 테스트되었지만 -regex
이 문제를 해결하는 데는 필요하지 않습니다.
답변3
xargs와 함께 find를 사용하십시오.
find / -name "*[0-9]*x*[0-9]*.jpg" | xargs /bin/rm -f
편집하다:
find / -name "*[0-9]x[0-9]*.jpg" | xargs /bin/rm -f
또는 아래 주석에 제안된 "authur2e5"와 같습니다.
find some/dir -name "*[0-9]x[0-9]*.jpg" -delete