我怎么能用bash删除除10最近以外的所有目录?

时间:2015-07-05 16:43:30

标签: linux bash ubuntu sh

我的基本/var/www/.versions目录中有以下文件夹:

1435773881 Jul  1 21:04
1435774663 Jul  2 21:17
1435774856 Jul  3 21:20
1435775432 Jul  4 21:56

如何使用bash脚本删除除最近10个目录以外的所有目录?

2 个答案:

答案 0 :(得分:2)

我应该这样做,我相信?

rm -r $(ls -td /var/www/.versions/*/ | tac | head -n-10)

这个想法:列表(只有ls)的目录(-d /var/www/.versions/*/)按时间排序-t(最旧的将显示在最后)。

然后,使用tac反转输出,以便最旧的目录位于顶部。

然后显示除head的最后10行以及-n

的否定参数以外的所有行

请先测试非重要目录; - )您可以按rm -r更改echo以查看要删除的内容。

答案 1 :(得分:1)

您可以使用-rt中的ls选项按相反的时间顺序列出。

rm -r $(ls -trd /var/www/.versions/*/ | head -n -10)

另外,请务必将/放在/var/www/.versions/*/的末尾,且所有目录名称都不以.开头