Linux - 仅保存最近的10个文件夹并删除其余文件夹

Ran*_*Ran 8 linux bash shell

我有一个包含我的应用程序版本的文件夹,每次上传新版本时都会为它创建一个新的子文件夹,子文件夹名称是当前时间戳,这里是所用主文件夹的打印输出(ls - l | grep ^ d):

drwxrwxr-x 7 root root 4096 2011-03-31 16:18 20110331161649
drwxrwxr-x 7 root root 4096 2011-03-31 16:21 20110331161914
drwxrwxr-x 7 root root 4096 2011-03-31 16:53 20110331165035
drwxrwxr-x 7 root root 4096 2011-03-31 16:59 20110331165712
drwxrwxr-x 7 root root 4096 2011-04-03 20:18 20110403201607
drwxrwxr-x 7 root root 4096 2011-04-03 20:38 20110403203613
drwxrwxr-x 7 root root 4096 2011-04-04 14:39 20110405143725
drwxrwxr-x 7 root root 4096 2011-04-06 15:24 20110406151805
drwxrwxr-x 7 root root 4096 2011-04-06 15:36 20110406153157
drwxrwxr-x 7 root root 4096 2011-04-06 16:02 20110406155913
drwxrwxr-x 7 root root 4096 2011-04-10 21:10 20110410210928
drwxrwxr-x 7 root root 4096 2011-04-10 21:50 20110410214939
drwxrwxr-x 7 root root 4096 2011-04-10 22:15 20110410221414
drwxrwxr-x 7 root root 4096 2011-04-11 22:19 20110411221810
drwxrwxr-x 7 root root 4096 2011-05-01 21:30 20110501212953
drwxrwxr-x 7 root root 4096 2011-05-01 23:02 20110501230121
drwxrwxr-x 7 root root 4096 2011-05-03 21:57 20110503215252
drwxrwxr-x 7 root root 4096 2011-05-06 16:17 20110506161546
drwxrwxr-x 7 root root 4096 2011-05-11 10:00 20110511095709
drwxrwxr-x 7 root root 4096 2011-05-11 10:13 20110511100938
drwxrwxr-x 7 root root 4096 2011-05-12 14:34 20110512143143
drwxrwxr-x 7 root root 4096 2011-05-13 22:13 20110513220824
drwxrwxr-x 7 root root 4096 2011-05-14 22:26 20110514222548
drwxrwxr-x 7 root root 4096 2011-05-14 23:03 20110514230258
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个将留下最后10个版本(子文件夹)并删除其余部分的命令.

有什么想法吗?

Ahm*_*gle 27

你去吧 (编辑)的

ls -dt */ | tail -n +11 | xargs rm -rf

首先列出最近修改过的目录,然后将所有这些目录除了前10个,然后发送给它们rm -rf.

  • 哇!首先,`ls -dt`只输出`.`.其次,如果你将其更正为"ls -t",则删除10个最新文件,与所要求的完全相反.第三,如果有目录以外的文件,你的脚本将很乐意删除随机的东西.第四,如果有"奇怪的"文件名,你的脚本可以做任何事情,因为你正在解析`ls`的输出,[不是一个好主意](http://mywiki.wooledge.org/ParsingLs),以及你将未经准备的输入传递给[`xargs`](http://linux.die.net/man/1/xargs). (3认同)