%20%EB%B0%8F%20-print0%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4%20%EC%98%88%EC%83%81%EB%90%9C%20%EA%B2%B0%EA%B3%BC%EA%B0%80%20%EC%A0%9C%EA%B3%B5%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
요약: 여러 패턴을 일치시키기 위해 -print0
옵션 find
과 -o
옵션을 올바르게 결합하는 방법은 무엇입니까? (사용 사례가 전달됨 xargs -0
)
예:
find . -print0 -name "File*.dat" -o -name "Data*.txt"
find . -print0 -name "File*.dat" -o -print0 -name "Data*.txt"
둘 다 돌아옴파일당디렉토리에.
find . -name "File*.dat" -o -name "Data*.txt" -print0
이 반환오직두 번째 패턴( ) Data*.txt
과 일치하는 파일입니다 .
이 작업을 올바르게 수행하려면 어떻게 해야 하며 왜 이런 일이 발생합니까?
답변1
인용 문제와 그룹화 문제가 있습니다. "
와일드카드 일치를 위해 쉘을 초대하려면 " "를 사용하십시오 . 일치하는 파일이 있거나 현재 디렉터리에 있으면 와일드카드 문자가 대체됩니다. 대신 " '
"을(를) 사용하세요.
그룹화는 ()
쉘 이스케이프가 필요한 대괄호 " "를 통해 수행됩니다.
당신의 명령은 다음과 같습니다.
find . \( -name 'File*.dat' -o -name 'Data*.txt' \) -print0
읽다 man find
.