특정 확장자를 가진 파일을 찾으려고합니다. 예를 들어 Robert라는 이름의 모든 .pdf 및 .jpg 파일을 찾고 싶습니다.
이 명령을 할 수 있다는 걸 알아
$ find . -name '*.h' -o -name '*.cpp'
하지만 확장자 외에 파일 자체의 이름을 지정해야합니다. 파일 이름을 반복해서 쓰는 것을 피할 수있는 방법이 있는지 확인하고 싶습니다. 감사합니다!
답변
내 선호 :
find . -name '*.jpg' -o -name '*.png' -print | grep Robert
답변
사용 find
의 -regex
인수를 :
find . -regex '.*/Robert\.\(h\|cpp\)$'
또는 다음을 사용하십시오 -name
.
find . -name 'Robert.*' -a \( -name '*.cpp' -o -name '*.h' \)
답변
find -name "*Robert*" \( -name "*.pdf" -o -name "*.jpg" \)
는 -o
repreents OR
조건을하고 괄호 안에 원하는대로 당신은 많은대로 추가 할 수 있습니다. 따라서 이름에 “Robert”라는 단어가 포함되어 있고 이름이 “pdf”또는 “jpg”로 끝나는 모든 파일을 찾습니다.
답변
사용의 대안으로 -regex
옵션find
질문에 레이블이 지정되어 있으므로세게 때리다, 가새 확장 메커니즘을 사용할 수 있습니다.
eval find . -false "-o -name Robert".{jpg,pdf}
답변
이 Q / A는 정규식으로 find를 사용 하는 방법을 보여줍니다. find 명령으로 regex를 사용하는 방법?
패턴은 다음과 같을 수 있습니다.
'^Robert\\.\\(h|cgg\\)$'
답변
스크립트로 다음을 사용할 수 있습니다.
find "${2:-.}" -iregex ".*${1:-Robert}\.\(h\|cpp\)$" -print
- 다른 이름으로 저장
findcc
- chmod 755 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)$'
답변
bash globbing 사용 ( find
필수가 아닌 경우 )
ls Robert.{pdf,jpg}