특정 확장자를 가진 파일을 찾으려고합니다. 예를 들어 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 를 사용하지 않는 것 같습니다 . .findfind
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은 대소 문자를 구분하지 않는 대신 사용해야 합니다 .