파일 이름에 별표가 있는 파일을 어떻게 찾나요? 질문하는 또 다른 방법은 와일드카드로 작동하지 않도록 별표를 어떻게 얻나요?
일반적으로 와일드카드의 경우 다음과 같습니다.
$ find ./ -type f \( -iname \*.jpg \)
탈출하지 않으면 *
다음을 얻습니다.
$ find ./ -type f \( -iname * \)
find: paths must precede expression: .....
find: possible unquoted pattern after predicate `-iname'?
*
오류가 인용되어야 함을 시사 하므로 시도해 보았 find ./ -type f \( -iname "*" \)
으나 find ./ -type f \( -iname '*' \)
이는 와일드카드로도 작동합니다.
답변1
올바른 해결책은 대괄호를 사용하는 것 같습니다 [ ]
. 물론 포스팅하고 5분만에 해결했습니다. 이것이 미래에 누군가에게 도움이 되기를 바랍니다.
$ find . -name '*[*]*' -type f
*
백슬래시를 사용하여 for를 벗어날 수도 있지만find
$ find . -name '*\**' -type f
작은따옴표는 를 확인하는 데 사용되며 *
에 대한 특별한 의미를 잃습니다 [
.\
껍질.
답변2
조심하세요. find(1)이 불평하는 것은 꽤 다른 것입니다. 현재 디렉토리에 a
, b
, 파일이 있다고 가정해 보겠습니다 c
. 예를 들어 전화하는 경우:
find ./ -type f \( -iname * \)
얻는 것은 무엇 find
입니까 ./ -type f ( -iname a b c )
(쉘은 결과 명령줄을 전달하기 전에 '*'를 확장하고 괄호는 인용됩니다. 에 대해서도 동일한 결과가 나타납니다 ***
). 당신이 쓰는 경우 :
find ./ -type f \( -iname \* \)
그것은 ./ -type f ( -iname * )
,