Linux 使用shell脚本对文件进行排序,然后删除旧文件
我有一个文件夹,里面有一些普通的文件。我想按修改日期对它们进行排序,保留最近的20个条目,并从剩下的内容中删除任何超过20天的内容 这是我删除超过20天的文件的代码Linux 使用shell脚本对文件进行排序,然后删除旧文件,linux,bash,shell,Linux,Bash,Shell,我有一个文件夹,里面有一些普通的文件。我想按修改日期对它们进行排序,保留最近的20个条目,并从剩下的内容中删除任何超过20天的内容 这是我删除超过20天的文件的代码 #!/bin/bash cleanup="../some path/" find $cleanup/*gz -mtime +20 -exec rm {} \; 但是,我不知道如何保留最后修改的20个文件,然后执行删除。如何修复它请?你可以用 awk 'NR > 20' 完全命令: find ...... | awk '
#!/bin/bash
cleanup="../some path/"
find $cleanup/*gz -mtime +20 -exec rm {} \;
但是,我不知道如何保留最后修改的20个文件,然后执行删除。如何修复它请?你可以用
awk 'NR > 20'
完全命令:
find ...... | awk 'NR > 20' | xargs -r rm
比如说
seq 30 | xargs -i echo 'file{}' | awk 'NR > 20' | xargs -r rm
谢谢你的回复。因此,在我的示例中,我应该将“|awk'NR>20”放在哪里?我有点困惑。我没有检查,但这应该可以工作“
find$cleanup/*gz-mtime+20 | awk'NR>20”| xargs-r rm
谢谢,它非常有用。您可能应该使用find“$cleanup”-name”*.gz
,这样bash就不会使用*
扩展。