在具有特定父文件夹的情况下查找和删除文件夹

时间:2014-09-18 09:57:36

标签: shell unix find directory

我正在尝试在4TB磁盘上搜索并删除旧的程序备份。它可能有超过500个实例用于各种用户等...该文件夹名为ACCOUNTS,它位于/ home / local / * / backups / Acc / ACCOUNTS,其中*是用户名。问题是最新的备份位于/ home / local / * / backups / Acc / Mon / ACCOUNTS中7天轮换。

我可以使用find来查找和删除所有ACCOUNTS实例,但这也会删除我想保留的实例。

那么如何搜索一个名为Accounts的文件夹,父文件夹调用Acc并将其删除,同时保留ACCOUNTS的所有其他实例?

我尝试find /home/local/ -type d -name "Acc/ACCOUNTS" -exec rm -rf {} \;但这不起作用,因为它会认为正斜杠是名称的一部分并发出警告。

1 个答案:

答案 0 :(得分:0)

rm -r /home/local/*/backups/Acc/ACCOUNTS  

应该有效。或者,如果您有很多帐户,并且上面点击ARG_MAX

for f in /home/local/*/backups/Acc/ACCOUNTS; do rm -r "$f"; done

您只需执行echo home/local/*/backups/Acc/ACCOUNTS

即可测试删除内容

如果由于某种原因你需要find,你可以做很多不同的事情,可能最简单的就是使用-regex

find /home/local/ -type d -regex '.*/Acc/ACCOUNTS' -exec rm -rf {} \; 

-exec rm -rf {} \;替换为-print以进行测试。