"find: paths must preference expression:" 현재 디렉토리에서 파일을 찾는 재귀 검색을 지정하려면 어떻게 해야 합니까?
현재 디렉토리와 하위 디렉토리에서 일치하는 항목을 찾는 데 어려움을 겪고 있습니다.
내가 달릴 때find *test.c
현재 디렉토리의 일치 항목만 표시됩니다.(서브디렉토리는 참조하지 않습니다)
내가 노력하면find . -name *test.c
같은 결과를 기대하지만 하위 디렉토리에 있는 일치 항목만 표시됩니다.작업 디렉토리에 일치하는 파일이 있으면 다음 정보가 나타납니다.find: paths must precede expression: mytest.c
이 에러의 의미는 무엇이며, 현재의 디렉토리와 그 서브 디렉토리 양쪽에서 일치하는 것을 취득하려면 어떻게 해야 합니까?
따옴표 안에 넣어보세요.셸의 와일드카드 확장에 접속하고 있습니다.따옴표에는 다음과 같은 정보가 표시됩니다.
find . -name bobtest.c cattest.c snowtest.c
... 구문 오류를 발생시킵니다.그 대신 다음을 시도해 보십시오.
find . -name '*test.c'
파일 표현식 주위에 작은 따옴표가 있는 점에 유의하십시오. 이렇게 하면 와일드카드의 확장 셸(배시)이 중지됩니다.
셸이 파일 목록으로 "*test.c"를 확장하고 있습니다.다음과 같이 별표 이스케이프를 시도합니다.
find . -name \*test.c
매뉴얼 찾기:
NON-BUGS
Operator precedence surprises
The command find . -name afile -o -name bfile -print will never print
afile because this is actually equivalent to find . -name afile -o \(
-name bfile -a -print \). Remember that the precedence of -a is
higher than that of -o and when there is no operator specified
between tests, -a is assumed.
“paths must precede expression” error message
$ find . -name *.c -print
find: paths must precede expression
Usage: find [-H] [-L] [-P] [-Olevel] [-D ... [path...] [expression]
This happens because *.c has been expanded by the shell resulting in
find actually receiving a command line like this:
find . -name frcode.c locate.c word_io.c -print
That command is of course not going to work. Instead of doing things
this way, you should enclose the pattern in quotes or escape the
wildcard:
$ find . -name '*.c' -print
$ find . -name \*.c -print
따옴표로 묶으세요.
find . -name '*test.c'
이 질문은 이미 답변이 되었군요.나는 단지 나에게 효과가 있었던 것을 공유하고 싶다.나는 그 사이에 공백이 없었다.(
그리고.-name
따라서 일부 파일을 제외한 파일을 선택하는 올바른 방법은 다음과 같습니다.
find . -name 'my-file-*' -type f -not \( -name 'my-file-1.2.0.jar' -or -name 'my-file.jar' \)
@Chris J의 답변에 기재된 정규 표현으로 조합할 수 없는 파일명을 여러 개 찾다가 이 질문을 하게 되었습니다.이것이 나에게 효과가 있었던 것입니다.
find . -name one.pdf -o -name two.txt -o -name anotherone.jpg
-o
또는-or
논리 OR입니다.상세한 것에 대하여는, Gnu.org 의 「파일 검색」을 참조해 주세요.
CygWin에서 실행 중이었어
다음과 같이 시험해 보십시오.
cat $(file $( find . -readable) | grep ASCII | tr ":" " " | awk '{print $1}')
그것으로 당신은 아스키로 읽을 수 있는 모든 파일을 찾을 수 있고 고양이와 함께 읽을 수 있다.
체중과 측정 불가능한 체중을 지정하는 경우:
cat $(file $( find . -readable ! -executable -size 1033c) | grep ASCII | tr ":" " " | awk '{print $1}')
이 에러는, 사이사이를 잊어버렸을 때에 발생합니다.(
그리고.-name
.
find . -not \(-name 'scripts' \)
그랬어야 했는데
find . -not \( -name 'scripts' \)
제 경우엔 미행자가 없었어요/
인패스
find /var/opt/gitlab/backups/ -name *.tar
언급URL : https://stackoverflow.com/questions/6495501/find-paths-must-precede-expression-how-do-i-specify-a-recursive-search-that
'programing' 카테고리의 다른 글
스타일을 통해 이벤트 기능을 설정하려면 어떻게 해야 합니까? (0) | 2023.04.17 |
---|---|
유닉스 명령어 "watch"를 사용한 색상 (0) | 2023.04.17 |
디스크에 로그를 백업한 후에도 로그 파일의 DBCC SHRINGFILE이 크기를 줄이지 않음 (0) | 2023.04.17 |
다른 열이 null인 경우 열을 선택하십시오. (0) | 2023.04.17 |
UITableView 헤더 섹션 커스터마이즈 (0) | 2023.04.17 |