我的基本/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个目录以外的所有目录?
答案 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/*/
的末尾,且所有目录名称都不以.
开头