이상한 명령 찾기

이상한 명령 찾기

'를 사용하여 찾았습니다.찾다' 명령은 일부 불일치가 있는 것으로 보이는 개별 파일을 검색합니다. 예를 들어, 다음 단어가 포함된 특정 파일을 검색하고 싶습니다.종이그 이름으로. 입력하면 sudo find /mnt -iname *paper* 출력은 다음과 같습니다.

/mnt/data/MyPhotos/Wallpapers

그건 공평해요. 제가 원하는 건 그게 아니거든요. 그러나 입력하면 sudo find /mnt -iname "*paper*"출력은 다음과 같습니다.

/mnt/data/MyMusic/FLV-Music/Joe_Jackson_Sunday_Papers_small.mp4
/mnt/data/MyMusic/FLV-Music/Status_Quo_Paper_Plane_medium.mp4
/mnt/data/MyPhotos/Wallpapers

이제 검색 중인 파일(두 번째 파일)이 표시됩니다. 그렇다면 첫 번째 경우에는 마지막 파일만 출력으로 표시되고 두 번째 경우에는 모든 파일에 문자열이 포함되는 이유는 무엇입니까?paper그들의 이름으로 출력됩니다. 여기서 인용문이 왜 달라지나요?

답변1

따옴표가 없으면 쉘은 *앞의 findis를 구문 분석하고 glob을 확장합니다(가능한 경우). 따옴표를 사용하면 와일드카드가 발생하지 않습니다.

전시하다:

$ tree
.
├── Wallpapers
└── stuff
    ├── Newspapers
    ├── Wallflowers
    └── Wallpapers

2 directories, 3 files
$ find stuff -iname *paper*
stuff/Wallpapers
$ find stuff -iname '*paper*'
stuff/Wallpapers
stuff/Newspapers

관련 정보