我正在尝试创建一个单行程序,它应该从dir中删除多余的文件以避免占用太多空间。
ls -r --sort=time | head -${{ls | wc -l} - n} | xargs rm -f
n应代表我想保留在目录中的文件数。
我在这里做错了,无法弄清楚是什么。有人可以帮忙吗?
答案 0 :(得分:0)
${{...}}
模糊地看起来像TCL或其他东西。它当然不是有效的shell脚本。
在Bash中(但不在Bourne shell中),你可以使用(( ... ))
进行算术表达式,我想这就是你想要的“ - n”。
进程替换的语法是带有圆括号的$(ls | wc -l)
。
合并这两者,你最终可能会得到像(($(ls | wc -l) - n))
这样的东西但你真的should not be parsing ls
output。看看这个问题的许多重复之一,以获得更好的方法。
答案 1 :(得分:0)
( 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< - here
感谢您的回复。