将除五个最新文件之外的所有文件移动到新目录

时间:2011-08-23 14:26:49

标签: linux bash unix

有一个hypotetical过程在volumeA中创建了一系列zip文件。

该过程是一个多线程进程,一次写入5个zip文件。

你在volumeA上的空间不足,制作了一个脚本,除了 从volumeA到volumeB的5个最新书面zip文件

2 个答案:

答案 0 :(得分:1)

这看起来有点像家庭作业,但可能很有趣。让我们看看......可能派上用场的工具:

  • ls -t(列表,按修改日期排序,最新排在最前面?)
  • sort(?)
  • cp(duh!)

好的,所以这是一个计划:

  • ls -t |跳过5 | xargs cp ...

您需要弄清楚如何跳过前5行并继续其余部分。然后其余部分将通过管道输送到xargs,这将为每个输入行调用cp。

如何实施SKIP?让我们谷歌“linux跳过前n行”:http://knol.google.com/k/justin-crites/skip-first-line-of-input-on-gnu-linux/r0h4brikem0y/5#

好的,这很简单:

  • ls -t | sed 1,5d | xargs cp ...

下一篇:那个糟糕的xargs又如何运作?我从来没有真正开始考虑那个......

...幸运的是,我们有一整个互联网来浏览。所以,你的脚本可能如下所示:

ls -t | sed 1,5d | xargs -i 1 mv volumeA/'{}' volumeB/'{}'

答案 1 :(得分:1)

我不能为你做功课,但我可以告诉你,你使用lshead命令的组合来获取你需要的列表zip文件 - 即。除了最近的5个。

请参阅manls的{​​{1}}页面,即:

head