使用find和exclude其他目录删除目录

时间:2016-02-03 17:55:32

标签: find

我正在尝试删除某些目录,并希望能够排除名为“logs”的目录。

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

# 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 {} \;命令,所以我可以删除这些目录。

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

-prune始终求值为true,这意味着永远不会评估-o另一侧的表达式。您需要更改顺序:

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