찾기를 사용하여 밑줄/문자 패턴이 있는 파일 삭제

찾기를 사용하여 밑줄/문자 패턴이 있는 파일 삭제

이와 같은 패턴이 있는 파일을 찾아 삭제하는 방법이 있습니까(여기서 패턴은 파일 이름에 문자나 숫자로 구분된 두 개의 밑줄만 있음)

전임자./file_name_name

find . -name '*_*_' -delete를 사용하여 이러한 파일을 찾으려고 시도했지만 성공하지 못했습니다. 아마도 파일이 디렉토리에 대한 심볼릭 링크이기 때문일까요?

답변1

파일 이름 와일드카드 패턴은 다음과 같습니다.거의두 개 이상의 밑줄이 있는 이름을 올바르게 감지하지만 이름 끝에 단일 밑줄을 강제 적용합니다.

*패턴 끝에 후행만 추가하면 문제가 없습니다.

$ find . -name '*_*_*'
./file__name
./a_file_name
./more_file_name_here

분명히아니요두 개 이상의 밑줄이 있는 이름과 일치합니다.

$ find . -name '*_*_*' ! -name '*_*_*_*'
./file__name
./a_file_name

여기서 두 번째 부분인 은 -name '*_*_*_*'밑줄이 3개 이상인 모든 이름과 일치하는 반면, 이전 부분은 !일치의 의미를 무효화합니다.

find없는 표현식 은 -type다음 이름과 일치합니다.어느파일 유형, 즉 디렉터리 이름, 명명된 파이프, 소켓, 장치 파일 등과 일치할 수 있습니다.

추가로 일치하는 항목만일반 파일add 를 사용 하거나 디렉터리 이름 일치를 방지하는 데 -type f사용할 수 있습니다 . 심볼릭 링크를 일치시키려면 to를 ! -type d사용하세요 .-type l

최종 find명령은 다음과 같습니다.

find . -type l -name '*_*_*' ! -name '*_*_*_*' -delete

이렇게 하면 현재 디렉터리 또는 이름에 정확히 두 개의 밑줄이 포함된 다음 디렉터리에서 발견된 기호 링크가 제거됩니다. 기호 링크의 대상은 이름이 기준과 일치하고 현재 디렉토리에 있는 기호 링크가 아닌 한 영향을 받지 않습니다.

관련 정보