programing

찾기를 사용하여 하위 디렉터리 제외

skycolor 2023. 4. 12. 22:00
반응형

찾기를 사용하여 하위 디렉터리 제외

내 디렉토리 구조는 다음과 같다.

data
|___
   |
   abc
    |____incoming
   def
    |____incoming
    |____processed
   123
    |___incoming
   456
    |___incoming
    |___processed

데이터 디렉터리 내의 모든 폴더에 수신 하위 폴더가 있습니다.def/incoming 및 456/incoming dir를 제외한 모든 폴더와 하위 폴더에서 모든 파일을 가져오고 싶습니다.나는 다음과 같은 명령으로 시험해 보았다.

 find /home/feeds/data -type d \( -name 'def/incoming' -o -name '456/incoming' -o -name arkona \) -prune -o -name '*.*' -print

예상대로 되지 않습니다.

라비

이 방법은 다음과 같습니다.

find /home/feeds/data -type f -not -path "*def/incoming*" -not -path "*456/incoming*"

설명:

  • find /home/feeds/data: 지정된 경로에서 재귀적으로 검색을 시작합니다.
  • -type f: 파일만 검색
  • -not -path "*def/incoming*": 에는 아무것도 포함하지 않음def/incoming그 경로의 일부로서
  • -not -path "*456/incoming*": 에는 아무것도 포함하지 않음456/incoming그 경로의 일부로서

문서화를 위해서만:(필요했던 것처럼) search'n'skip 별자리가 많기 때문에 더 깊이 파고들어야 할 수도 있습니다.이 될 수도 있다prune당신의 친구입니다.-not -path기대했던 대로 되지 않을 거야

이것은 디렉토리를 제외한 15개의 검색 예제의 중요한 예입니다.

http://www.theunixschool.com/2012/07/find-command-15-examples-to-exclude.html

첫 번째 질문으로 연결하기 위해 다음과 같이 작업을 완료했습니다.

find . -regex-type posix-extended -regex ".*def/incoming.*|.*456/incoming.*" -prune -o -print 

그런 다음 하나의 파일을 찾으면서 패치를 제외하려면| grep myFile.txt.

검색 버전에 따라 다를 수도 있습니다.알겠습니다.

$ find -version
GNU find version 4.2.27
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION SELINUX

-name패스 전체가 아니라 파일 이름에만 일치합니다.사용하고 싶다-path대신에, 디렉토리를 잘라내는 부분에서는,def/incoming.

find $(INP_PATH} -type f -ls |grep -v "${INP_PATH}/.*/"

[ How to exclude a directory in find . ]명령어에 대한 다음 답변을 입력합니다.

find . \( -name ".git" -o -name "node_modules" \) -prune -o -print

이게 바로 내가 한 일이니까 모든 것을 배제하기 위해 한 일이다..git디렉토리로 전달하다-exec에 무언가를 그리핑하기 위해

find . -not -path '*/\.*' -type f -exec grep "pattern" [] \;
  • -not -path '*/\.*'숨겨진 디렉토리가 모두 제외됩니다.
  • -type f유형 파일만 나열되며, 그런 다음 이 파일을 에 전달할 수 있습니다.-exec하고 싶은 거 다 해

언급URL : https://stackoverflow.com/questions/13460482/exclude-a-sub-directory-using-find

반응형