파일 이름에 별표가 있는 파일을 찾는 방법은 무엇입니까? 질문하는 또 다른 방법은 별표가 와일드카드 역할을 하는 것을 어떻게 막을 수 있는가입니다.
일반적으로 와일드카드의 경우 다음과 같이 합니다.
$ 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
*
백슬래시를 사용하여 이스케이프 할 수도 있지만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 * )
,