我正在尝试创建一个应该从目录删除多余文件的单线程,以避免消耗太多空间。始终保持n个最新文件在目录中
ls -r --sort=time | head -${{ls | wc -l} - n} | xargs rm -f
n应代表我想保留在目录中的文件数。
我在这里做错了什么,无法弄清楚什么。有人可以帮忙吗?
我正在尝试创建一个应该从目录删除多余文件的单线程,以避免消耗太多空间。始终保持n个最新文件在目录中
ls -r --sort=time | head -${{ls | wc -l} - n} | xargs rm -f
n应代表我想保留在目录中的文件数。
我在这里做错了什么,无法弄清楚什么。有人可以帮忙吗?
(ls -t | head -n 25 ; ls) | sort | uniq -u | sed -e 's,.*,"&",g' | xargs rm
完成了我的诡计。
Delete all but the most recent X files in bash < - 在这里
感谢您的答复。
那${{...}}
看起来有点像TCL什么的。这当然不是有效的shell脚本。
在Bash中(但不是在Bourne shell中),你可以使用((...))
作为算术表达式,我猜是你想要“ - n”做的。
过程替换的语法是带圆括号的$(ls | wc -l)
。
合并这两个,你可能最终得到类似(($(ls | wc -l) - n))
,但你真的should not be parsing ls
output无论如何。看看这个问题的许多重复之一,以获得更好的方法。