gpt4 book ai didi

bash - 用于遍历目录的 SSH 命令,除了一些指定的目录

转载 作者:行者123 更新时间:2023-11-29 09:22:24 25 4
gpt4 key购买 nike

是否可以通过 SSH 执行 bash 命令,该命令在我指定的 3 或 4 之外的多个目录上循环?像这样的东西:

删除 /home/ 中所有目录的 public_html/outdated/ 除了 /home/exception1/ , /home/exception2//home/exception3/

我在 HostGator Dedicated Linux 服务器上。

最佳答案

这都是一行,但为了便于阅读,我在这里将其拆分

find /home
\( -wholename '/home/exception1'
-o -wholename '/home/exception2'
-o -wholename '/home/exception3' \)
-prune -o
-wholename '*/public_html/outdated' -type d
-exec rm -rvf \{} \;

在运行之前,我强烈建议将 -exec rm -rvf\{}\; 位替换为 -print 以验证它只打印你的内容想要删除。

它是这样工作的:find 递归地寻找东西。 \(...\)' 中的内容匹配您想要完全跳过的目录(即:修剪)。使用 -prune 的标准模式是说出您想要修剪的内容,然后是 -prune -o`,然后是您实际想要匹配的内容。

我们想要匹配 public_html/outdated 目录,所以这就是 -wholename '*/public_html/outdated' -type d 的用途。 (-type d 表示“是一个目录”)。

最后是我们要执行的操作。再次将此部分替换为 -print,直到您确定它可以满足您的要求。

一个警告:这将吐出一堆形式的警告:

find: `/home/foo/public_html/outdated': No such file or directory

这是因为 find 试图进入它刚刚删除的那些目录。您可以安全地忽略这些 - 尽管有警告,查找仍将继续。

关于bash - 用于遍历目录的 SSH 命令,除了一些指定的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4412198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com