현재 다음 스크립트가 있습니다.
find . -name '*.log' -print0 | xargs -0 tar zcf $file
모든 "*.log" 파일을 수집합니다. 모든 ".txt" 파일을 포함하도록 수정하고 싶지만 방법을 모르겠습니다. 상당히 간단할 것입니다. 그렇죠?
답변1
find 명령을 변경하는 방법에는 여러 가지가 있습니다. 이것은:
find . \( -name '*.log' -o -name '*.txt' \) -print0
이는 -o
OR 연산자이므로 첫 번째 조건이 실패하면 두 번째 조건을 확인합니다. GNU find가 있는 경우 적절한 이름의 find를 사용할 수도 있습니다 -or
. 첫 번째 표현식이 유효하면 두 번째 표현식이 평가되지 않습니다.
답변2
-regex
대신 플래그를 사용하는 경우 -name
이름을 정규식으로 지정할 수 있습니다.
find . -regex '.*\.\(log\|txt\)' -print0 | xargs -0 tar zcf $file