![패턴과 일치하는 디렉터리에서 확장자가 .csv인 파일을 찾습니다.](https://linux55.com/image/65712/%ED%8C%A8%ED%84%B4%EA%B3%BC%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%ED%99%95%EC%9E%A5%EC%9E%90%EA%B0%80%20.csv%EC%9D%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
하위 폴더가 많은 폴더가 있습니다.
루트 폴더 이름은 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]
.
c
s
v
a_
-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'