这是从目录
中删除除x文件以外的任何内容的命令(ls -t|head -n 5;ls)|sort|uniq -u|xargs rm
我想如何修改它以使用命令行
从目录外部执行相同的操作答案 0 :(得分:2)
试试这个:
cd /path/to/dir && { (ls -t|head -n 5;ls)|sort|uniq -u|xargs rm; }
如果目录不存在,它将不执行任何操作。
答案 1 :(得分:2)
对于您的原始行我建议您可以反转排序并使用head来排除最后一行。然后它变成:
ls -drt ~/somedir/* | head -n-5 | xargs rm
我鼓励你研究这样的问题的find命令。您可以获得更多控制权,并且可以处理诸如关系之类的事情(例如,删除早于第五个旧文件的文件)
有未答复的详细信息,如:
ls
你想要非递归你明白了。 find的手册页有例子,但是有:
DIR=cdplatform && find $DIR -maxdepth 1 -type f ! -newer $(ls -Fdrt ${DIR}/* | grep -v "/$" | head -n-4 | tail -1) -exec rm {} \;
答案 2 :(得分:2)
使用find仅保留x个最新文件:
find /path/to/dir ! -newer $(ls -t | sed 'x!d') -exec rm {} \;