如何删除除N个最新文件以外的所有文件?

时间:2016-05-27 04:01:21

标签: bash

this命令允许我从我的电脑上登录服务器,到特定目录 ssh -t xxx.xxx.xxx.xxx "cd /directory_wanted ; bash"

如何在该目录中执行此操作。我希望能够基本删除除N最新的文件以外的所有文件。 find ./tmp/ -maxdepth 1 -type f -iname *.tgz | sort -n | head -n -10 | xargs rm -f

2 个答案:

答案 0 :(得分:3)

此命令应该有效:

ls -t *.tgz | tail -n +11 | xargs rm -f

警告:在执行rm -f之前,请确认ls -t *.tgz | tail -n +11列出的文件符合预期。

工作原理:

  

ls列出目录的内容。-t标记排序依据   修改时间(最新的第一个)。请参阅ls

的手册页      

tail -n +11输出从第11行开始。请参阅。的手册页   tail了解更多信息   detials。

如果系统是Mac OS X,那么您也可以根据创建时间进行删除。将ls-Ut标志一起使用。这将根据创建时间对内容进行排序。

答案 1 :(得分:2)

您可以使用此命令

ssh -t xxx.xxx.xxx.xxx "cd /directory_wanted; ls -t *.tgz  | tail -n
+11 | xargs rm -f; bash"

在旁边的引号中,我们可以添加要在远程机器中执行的操作。但是每个命令都应以分号(;)

结束

注意:包含silentMonk建议的相同命令。这很简单,而且很有效。但在执行操作之前验证一次。