programing

지정된 디렉토리에서 파일만 찾고 bash를 사용하여 하위 디렉토리를 무시하는 방법

codeshow 2023. 4. 17. 22:10
반응형

지정된 디렉토리에서 파일만 찾고 bash를 사용하여 하위 디렉토리를 무시하는 방법

내가 하고 있는 것은find명령어를 사용하여 특정 파일을 찾을 수 있지만 하위 디렉터리의 일부 파일에는 무시하려는 이름이 같은 파일이 있습니다.

다음과 같은 파일/패턴에 관심이 있습니다.

/dev/abc-scanner, /dev/abc-cash ....

명령어는 다음과 같습니다.

find /dev/ -name 'abc-*'

반환되는 내용:

/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash

다음 파일은 무시합니다./dev/.udev/...

검색을 첫 번째 수준으로 제한하려는 경우 다음을 수행할 수 있습니다.

 find /dev -maxdepth 1 -name 'abc-*'

...또는 특별히 제외시키고 싶은 경우.udev디렉토리에서는 다음 작업을 수행할 수 있습니다.

 find /dev -name '.udev' -prune -o -name 'abc-*' -print

특별한 이유라도 있나요?find? 그냥 사용하면 됩니다.ls디렉토리의 패턴과 일치하는 파일을 검색합니다.

ls /dev/abc-*

를 사용할 필요가 있는 경우find, 를 사용할 수 있습니다.-maxdepth 1지정된 디렉토리에만 적용되도록 switch를 선택합니다.

원하는 대로 할 수 있습니다.

find /dev \( ! -name /dev -prune \) -type f -print

저는 좀 더 일반적인 문제를 안고 왔습니다.-패턴과 일치하는 디렉토리에서 파일을 찾고 싶었지만 하위 디렉토리에서 파일을 찾고 싶지는 않았습니다.

나의 솔루션(모든 것을 요구하고 있다고 가정)cpp직접 존재하는 파일arch디렉토리):

find . -path "*/arch/*/*" -prune -o -path "*/arch/*.cpp" -print

maxdepth는 검색을 제한하고, 제외시키고 싶은 서브디렉토리의 이름을 모르기 때문에 사용할 수 없었습니다.

생가죽(rh)이라고 불리는 대안이 있는데 훨씬 사용하기 쉽다.대신:

find /dev -maxdepth 1 -name 'abc-*'

다음 작업을 수행할 수 있습니다.

rh -r /dev '"abc-*"'

-r은 "-m1 -M1"과 동일하며, 이는 find의 "-mindepth 1 - maxdepth 1"과 동일하며, 훨씬 짧습니다.

Rawhide(rh)는 https://raf.org/rawhide 또는 https://github.com/raforg/rawhide에서 구할 수 있습니다.적어도 Linux, FreeBSD, OpenBSD, NetBSD, Solaris, macOS 및 Cygwin에서 작동합니다.

면책사항:저는 현재 생선의 작가입니다.

find /dev -maxdepth 1 -name 'abc-*'

나한테는 안 통한다.아무것도 돌려주지 않는다.'.' 를 입력하면 작업 중인 디렉토리 아래에 있는 모든 파일이 표시됩니다.

find /dev -maxdepth 1 -name "*.root" -type 'f' -size +100k -ls

아무것도 반환하지 않음.' 대신 내 디렉토리에 있는 모든 '큰' 파일 목록과 오래된 파일을 저장하는 루트 파일/디렉토리가 나타납니다.

계속합니다.이거 되는구나.

find ./ -maxdepth 1 -name "*.root" -type 'f' -size +100k -ls
564751   71 -rw-r--r--   1 snyder   bfactory   115739 May 21 12:39 ./R24eTightPiPi771052-55.root
565197  105 -rw-r--r--   1 snyder   bfactory   150719 May 21 14:27 ./R24eTightPiPi771106-2.root
565023   94 -rw-r--r--   1 snyder   bfactory   134180 May 21 12:59 ./R24eTightPiPi77999-109.root
719678   82 -rw-r--r--   1 snyder   bfactory   121149 May 21 12:42 ./R24eTightPiPi771098-10.root
564029  140 -rw-r--r--   1 snyder   bfactory   170181 May 21 14:14 ./combo77v.root

보아하니/dev 대상 디렉토리를 의미합니다.그렇지만./꼭 필요한 것뿐만 아니라.의 필요성/내가 알고도 분명하지 않았다./dev어느 정도 의미가 있었다.

저는 평판이 없어서 댓글로 답할 수 없었습니다.

언급URL : https://stackoverflow.com/questions/7715485/how-to-only-find-files-in-a-given-directory-and-ignore-subdirectories-using-bas

반응형