지정된 디렉토리에서 파일만 찾고 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
'programing' 카테고리의 다른 글
Swift iOS 앱에서 상태 표시줄을 숨기려면 어떻게 해야 합니까? (0) | 2023.04.17 |
---|---|
PowerShell 스크립트를 사용하여 EXE 파일 실행 (0) | 2023.04.17 |
조건의 Bash에서 "unary operator expected" 오류가 발생했습니다. (0) | 2023.04.17 |
여러 열에서 최소값을 선택하는 가장 좋은 방법은 무엇입니까? (0) | 2023.04.17 |
WPF DataGrid에서 붙여넣기 데이터를 복사할 때 OpenClipboard가 실패했습니다. (0) | 2023.04.17 |