【发布时间】:2019-10-28 20:23:40
【问题描述】:
我正在尝试使用 find 和 xargs 通过 ssh 删除文件。在本地机器命令正常工作。我也在使用例外列表。
我曾尝试更改 ' ' 和 " " 之间的括号,但它不起作用。
save_files=(test1 test2)
在本地机器上:
find / -mindepth 1 | grep -vE "$(IFS=\| && echo "${save_files[*]}")" | xargs rm -rf
通过 ssh:
su - user -c "ssh host find / -mindepth 1 | grep -vE '$(IFS=\| && echo "${save_files[*]}")' | xargs rm -rf"
在上面的 ssh 命令中,xargs 正在本地执行。我需要远程机器上的 xargs 。即使我把 find 命令放在 '' 括号中,如下所示:
su - user -c "ssh host 'find / -mindepth 1 | grep -vE '$(IFS=\| && echo "${save_files[*]}")' | xargs rm -rf'"
【问题讨论】:
-
附带说明,删除“/”下与动态模式不匹配的任何内容是一项冒险操作。如果模式中存在问题,则可能会删除太多文件
-
'/' 只是这里的例子,在我的情况下,我使用其他目录。