find가 유효하지 않은 표현에 대해 불평하는 이유는 무엇입니까?

find가 유효하지 않은 표현에 대해 불평하는 이유는 무엇입니까?

백업 파일에서 주간 디렉토리로 복사하는 다음과 같은 쉘 스크립트가 있습니다.

#!/bin/sh
find . type f \( -iname "SS1*.tar" -o -iname "SS2*.tar" -o -iname "SS3*.tar" -o -iname "SS4*.tar"\) -exec cp {} /backup_file/backup/weekly \;

따라서 실행한 후 "잘못된 표현식"이라는 오류 메시지가 나타납니다.

이 문제를 해결하도록 도와주세요.

답변1

두 가지 구문 오류가 있습니다.

  • type f이어야 합니다 -type f.
  • 앞에 공백이 필요합니다 \).

그래서 수정된 명령은 다음과 같습니다.

find . -type f \( -iname "SS1*.tar" -o -iname "SS2*.tar" -o -iname "SS3*.tar" -o -iname "SS4*.tar" \) -exec cp {} /backup_file/backup/weekly \;

답변2

더 간단하다:find . -type f -iname "SS[1234]*.tar" -exec cp {} /backup_file/backup/weekly \;

관련 정보