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
'

(假设 root 用户的登录 shell$machine与 Bourne 类似)。

请记住,您传递给的ssh不是在远程主机上运行的命令的参数,而是由远程用户的登录 shell 解释为 shell 代码的字符串。因此最简单的方法是将该字符串放在单引号内,这样本地 shell 就不会干扰它。

答案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"

相关内容