选择性子目录删除

时间:2014-05-06 13:51:40

标签: linux bash directory find

到目前为止,我有这个脚本。 我的文件夹结构现在是/ root / test / 在内部测试中,每个月根据(日期+%B)

创建一个名为May Jun July的文件夹

我希望脚本删除所有子目录减去与此月份匹配的目录(日期+%B)并保留其内容。

目前它删除了子目录匹配以外的所有内容。梅完全是空的。任何想法?

#!/bin/bash

LinkDest=/root/test
m_date=$(date +%B)

find $LinkDest/ -not -name May -xdev -depth -mindepth 1 -exec rm -Rf {} \;

2 个答案:

答案 0 :(得分:0)

尝试在没有find的情况下运行-exec以查看要删除的内容。问题是-name尝试匹配整个名称,而不是它的一部分。您需要-path

find -not -path "*/$m_date" -not -name $m_date

答案 1 :(得分:0)

您可以使用:

find $LinkDest/ -not -path "*$m_date*" -xdev -depth -mindepth 1 -exec rm -Rf '{}' \;