특정 확장자를 가진 파일을 찾으려고합니다. 예를 들어 Robert라는 이름의 모든 .pdf 및 .jpg 파일을 찾고 싶습니다.
이 명령을 할 수 있다는 걸 알아
$ find . -name '*.h' -o -name '*.cpp'
하지만 확장자 외에 파일 자체의 이름을 지정해야합니다. 파일 이름을 반복해서 쓰는 것을 피할 수있는 방법이 있는지 확인하고 싶습니다. 감사합니다!
특정 확장자를 가진 파일을 찾으려고합니다. 예를 들어 Robert라는 이름의 모든 .pdf 및 .jpg 파일을 찾고 싶습니다.
이 명령을 할 수 있다는 걸 알아
$ find . -name '*.h' -o -name '*.cpp'
하지만 확장자 외에 파일 자체의 이름을 지정해야합니다. 파일 이름을 반복해서 쓰는 것을 피할 수있는 방법이 있는지 확인하고 싶습니다. 감사합니다!
iname
또는 name
찾고자하는 것에 따라 다릅니다. 나는 사건이 필수적인 상황에 있었다.
답변:
내 선호 :
find . -name '*.jpg' -o -name '*.png' -print | grep Robert
find -exec ...
jpg
있거나 png
더 긴 경로의 일부로 잘 작동하지 않습니다 .
사용의 대안으로 -regex
옵션find
질문에 레이블이 지정되어 있으므로세게 때리다, 가새 확장 메커니즘을 사용할 수 있습니다.
eval find . -false "-o -name Robert".{jpg,pdf}
eval
거나 잊었 거나, 더 복잡한 것에 대한 별칭이거나, Linux 버전 에서 주식 GNU 를 사용하지 않는 것 같습니다 . .
find
find
find
지원하지 않습니다 -false
. 나는 두 개의 상호 배타적 인 조건을 제공하여이 문제를 해결했습니다 -inum 1 -inum 2
.
이 Q / A는 정규식으로 find를 사용 하는 방법을 보여줍니다. find 명령으로 regex를 사용하는 방법?
패턴은 다음과 같을 수 있습니다.
'^Robert\\.\\(h|cgg\\)$'
스크립트로 다음을 사용할 수 있습니다.
find "${2:-.}" -iregex ".*${1:-Robert}\.\(h\|cpp\)$" -print
findcc
그리고 그것을 사용하십시오
findcc [name] [[search_direcory]]
예 :
findcc # default name 'Robert' and directory .
findcc Joe # default directory '.'
findcc Joe /somewhere # no defaults
사용할 수 없습니다
findcc /some/where #eg without the name...
또한 대안으로 사용할 수 있습니다.
find "$1" -print | grep "$@"
과
findcc directory grep_options
처럼
findcc . -P '/Robert\.(h|cpp)$'
iname
은 대소 문자를 구분하지 않는 대신 사용해야 합니다 .