나는 와일드 카드 재귀 와일드 카드를 배우고 있으며 시도했습니다.
$ ls **/* | wc -l
15
$ ls */** | wc -l
15
그들은 동일한 결과를 출력합니다.
**/*
와 사이에 차이가 있나요 */**
?
답변1
*/**
디렉터리(및 해당 하위 디렉터리 및 파일)만 일치합니다. 현재 디렉터리(디렉토리가 아닌)의 파일은 일치하지 않습니다. */
그 이유는 globstar 확장을 시작하기 전에 디렉터리 접두사가 필요하기 때문입니다 **
. 의 경우 옵션에 따라 현재 디렉터리 아래의 모든 파일 및 디렉터리로 확장되므로 **/*
후행 /*
은 관련이 없습니다 . 이 시점에서 모든 디렉토리가 확장되었으므로 후행은 아무것도 일치하지 않습니다.**
dotglob
/*
ls
"유용하게" 읽을 수 있으므로 테스트할 때 주의하세요.입력하다전달할 수 있는 모든 디렉토리는 다음과 같습니다.
printf "%s\n" */**
printf "%s\n" **/*
또한 배관을 사용하면 wc -l
실제 개수가 잘못될 수 있습니다.
$ touch a $'b\nc'
$ ls -1
a
b?c
$ ls | wc -l
3 ## WRONG!