2015-02-06 59 views
-1

我正在尝试创建一个应该从目录删除多余文件的单线程,以避免消耗太多空间。始终保持n个最新文件在目录中

ls -r --sort=time | head -${{ls | wc -l} - n} | xargs rm -f 

n应代表我想保留在目录中的文件数。

我在这里做错了什么,无法弄清楚什么。有人可以帮忙吗?

回答

0

${{...}}看起来有点像TCL什么的。这当然不是有效的shell脚本。

在Bash中(但不是在Bourne shell中),你可以使用((...))作为算术表达式,我猜是你想要“ - n”做的。

过程替换的语法是带圆括号的$(ls | wc -l)

合并这两个,你可能最终得到类似(($(ls | wc -l) - n)),但你真的should not be parsing ls output无论如何。看看这个问题的许多重复之一,以获得更好的方法。