【问题标题】:delete directories with find and exclude other directories使用查找删除目录并排除其他目录
【发布时间】:2016-02-03 17:55:32
【问题描述】:

我正在尝试删除一些目录,并且我希望能够排除一个名为“日志”的目录被删除。

这是我的基本查找操作(不排除):

# find . -type d  |tail -10
./d20160124-1120-df8mfb/deployments
./d20160124-1120-df8mfb/releases
./d20160131-16993-vazqg5
./d20160131-16993-vazqg5/metadata
./d20160131-16993-vazqg5/deployments
./d20160131-16993-vazqg5/releases
./logs
./d20160203-27735-1tqbjh6
./d20160125-1120-1yccr9p
./d20160131-16993-1yf9lnc

我只是在拖尾输出,以便您在不占用整个页面的情况下了解正在发生的事情。 :)

如果我尝试使用 prune 命令排除日志目录,则不会返回任何结果。

root@ops-manager:/tmp/tmp# find . -type d  -prune -o -name 'logs' -print
root@ops-manager:/tmp#

我做错了什么?

一旦我做对了,我将添加一个 -exec rm rf {} \;命令,以便我可以删除这些目录。

如有任何帮助,我们将不胜感激!

【问题讨论】:

  • 解决方案必须是纯 bash 吗?如果是这样,最好将bash 标签放在问题中。

标签: find


【解决方案1】:

-prune 总是计算为真,这意味着-o 另一侧的表达式永远不会被计算。您需要更改顺序:

find . -type d -name 'logs' -prune -o -print

【讨论】:

    猜你喜欢
    • 2015-12-03
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多