linux + 원격 시스템의 특정 파일을 제외한 파일 찾기 + 삭제

linux + 원격 시스템의 특정 파일을 제외한 파일 찾기 + 삭제

Redhat 7.2 Linux 버전이 있습니다.

/etc/yum.repos.d/etc/yum.repos.d 아래의 다음 파일을 제외하고 원격 시스템의 모든 저장소 파일을 삭제하고 싶습니다.

local.repo
redhat.repo
cluster.repo

우리는 이것을 시도했습니다(성공하지 못함)

ssh root@$machine find /etc/yum.repos.d  -type f -not -name 'local.repo ' -or -name 'redhat.repo' -or -name ' cluster.repo’  –delete

또는

ssh root@$machine find /etc/yum.repos.d  ! -name 'local.repo|redhat.repo|cluster.repo' -type f -exec rm -f {} +

또는

ssh root@$machine find   /etc/yum.repos.d -type f -not \(-name 'local.repo'  -or -name 'redhat.repo' -or -name 'cluster.repo' \) -delete

답변1

ssh "root@$machine" '
   find /etc/yum.repos.d -type f ! \(
     -name local.repo -o \
     -name redhat.repo -o \
     -name cluster.repo \) –delete
'

(루트 사용자의 로그인 쉘이 $machineBourne과 유사하다고 가정).

명령 에 전달하는 내용은 ssh원격 호스트에서 실행될 인수가 아니라 원격 사용자의 로그인 셸에서 셸 코드로 해석되는 문자열이라는 점을 기억하세요. 따라서 가장 쉬운 방법은 문자열을 작은따옴표로 묶어 로컬 쉘이 이를 방해하지 않도록 하는 것입니다.

답변2

이 CLI는 /etc/yum.repos.d 아래의 모든 파일을 삭제하고 해당 파일을 제외하며 삭제된 파일도 인쇄합니다.

ssh "root@$IP" "find  /etc/yum.repos.d ! -name local.repo ! -name redhat.repo ! -name cluster.repo    -type f -delete -print"

관련 정보