패턴과 일치하는 디렉터리에서 확장자가 .csv인 파일을 찾습니다.

패턴과 일치하는 디렉터리에서 확장자가 .csv인 파일을 찾습니다.

하위 폴더가 많은 폴더가 있습니다.

루트 폴더 이름은 allCSV이고, 하위 폴더 이름은 다음과 같습니다.a_date(s), b_date(s), c_date(s) ...

나는 a_date(s)에 있고 .로 끝나는 것을 원합니다 .csv.

나는 이전에 시도했습니다:

find ../ -name '[a_]*' -a -name '*[.csv]'

하지만 다음으로 끝나는 모든 파일이 표시됩니다..csv

답변1

이 패턴은 또는 문자로 시작하는 이름 [a_]*과 일치합니다 . 이 패턴은 문자 중 하나로 끝나는 이름과 일치합니다. 로 시작하는 이름을 일치시키려면 를 사용하십시오. 로 끝나는 이름을 일치시키려면 .a_*[.csv].csva_-name 'a_*'.csv-name '*.csv'

find ../ -name 'a_*' -a -name '*.csv'또는 find ../ -name 'a_*.csv'이름이 .로 시작 a_하고 끝나는 파일과 동일하게 일치합니다 .csv. 이는 파일에 도달하기 위해 통과한 디렉터리를 필터링하지 않습니다.

파일이 상위 디렉터리의 하위 디렉터리(예: )에 있는 경우에는 ../a_foo/wibble.csv필요하지 않습니다 find. 이 find명령은 디렉터리 트리를 반복적으로 검색하는 경우에만 유용합니다. echo또는 다음 을 사용할 수 있습니다 ls.

ls ../a_*/*.csv

a_*파일이 디렉토리 아래의 하위 디렉토리에 있을 수 있는 경우 (예: ../a_foo/wibble.csv또는 ../a_foo/bar/wibble.csv는 제외 ../qux/a_foo/wibble.csv) 해당 파일을 호출하여 디렉토리를 find검색하도록 지시합니다 .a_*

find ../a_* -name '*.csv'

또는 다음을 find사용할 수 있습니다.**하위 디렉터리의 재귀 검색을 위한 와일드카드입니다. ksh93에서는 먼저 이 모드를 활성화해야 합니다 set -o globstar. Bash에서는 먼저 이 모드를 활성화해야 합니다 shopt -s globstar. zsh에서는 이 모드가 기본적으로 활성화되어 있습니다. 다른 쉘(예: 일반 sh)은 **.

ls ../a_*/**/*.csv

a_*디렉터리 자체가 상위 디렉터리 아래의 어느 깊이에든 위치할 수 있는 경우 find -path또는 다음을 사용할 수 있습니다 **.

find .. -path '*/a_*/*.csv'
ls ../**/a_*/**/*.csv

답변2

이를 수행하는 방법에는 여러 가지가 있습니다. 파일을 나열하려면 다음을 사용할 수 있습니다 ls.

ls a_date\(s\)/*csv

또는 다음을 사용하여 find:

find .. -path '*a_date*/*csv' 
find ../allCSVs/a_date\(s\)/ -name '*csv'

답변3

당신이 사용할 수있는기록이를 통해 아래와 같이 모든 문서 유형을 검색하고 특정 폴더로 검색을 제한할 수 있습니다.

단순 검색 단순 검색

고급 검색(특정 폴더로 검색 제한) 검색 제한

관련 정보