我可以使用什么 Unix 命令来强制限制文件夹中的 100 个文件?

Nic*_*ton 3 unix filesystems

我想删除目录中最旧的文件,限制为 100 个文件。换句话说,我要确保目录中存在的文件不超过 100 个,如果超过限制,则删除限制后最旧的文件。我不只是想删除超过 x 天的文件,因为如果这是在 cronjob 上运行的,最终所有文件都会被删除。

我想如果我要对此进行编程,伪代码将是:

list = dir.getFiles()
list.sortByDate()
deleteList = list.getSubList(100, end) // from, to
deleteAll(deleteList)
Run Code Online (Sandbox Code Playgroud)

那么合适的 Unix 命令是什么?我想find会以某种方式参与-exec争论,但我不确定排序/限制方面。

Bre*_*bad 5

find应该没有必要。如果你先去正确的目录,

rm -f `ls -rt | head -n -100`
Run Code Online (Sandbox Code Playgroud)

指定路径

rm -f `ls -rt /path/to/my/dir | head -n -100`
Run Code Online (Sandbox Code Playgroud)

cron(在 Ubuntu 上!)

/bin/rm -f `/bin/ls -rt /path/to/my/dir | /usr/bin/head -n -100`
Run Code Online (Sandbox Code Playgroud)

命令路径可以使用which,例如

which ls
Run Code Online (Sandbox Code Playgroud)

最后,如果文件名包含空格,它们应该被引用ls -Q然后发送到xargs

/bin/ls -Qrt /path/to/my/dir | /usr/bin/head -n -100 | /usr/bin/xargs /bin/rm -f
Run Code Online (Sandbox Code Playgroud)

(在Ubuntu上进行测试,为你的测试,取代rm -fecho看到什么将被删除)