【问题标题】:How to copy the limited files by command in unix? [closed]如何在unix中通过命令复制有限的文件? [关闭]
【发布时间】:2014-05-17 14:25:04
【问题描述】:

当我尝试将有限的文件转移到另一个文件夹时,文件格式是.flv。这是使用的命令:

ls -ltr | grep 'May 16 2013' | awk '{print $9}' | xargs cp -rf /root/directory/.

我该怎么做?

【问题讨论】:

  • 调试步骤一:移除最后一个管道,看看输出是否符合您的预期。
  • 不要解析ls,使用find(1);
  • 除此之外 - 如果您已经在使用 awk,则无需使用 grepls .. | awk '/May 16 2013/{print $9}' | xargs ..

标签: shell unix awk xargs


【解决方案1】:

正如 GoodPerson 提到的,更简单的方法是使用 findexec

find . -name '*May 16 2013*' -exec cp -rf {} /root/directory \;

请注意,在上面的命令中,命令cp -rf {} /root/directory 将针对find 找到的每个文件或目录执行,并且该目录将替换为{}

更新:上面的命令假设(可能不正确)您的文件名包含May 16 2013。如果您确实在该日期修改了文件,则问题会稍微复杂一些,并且取决于您的 find 版本,但 this answer 告诉我们如何使用旧版本的 find 来解决。

首先,您创建两个具有您指定日期的参考文件。然后,您会找到位于这些日期之间的文件。以下三个命令将查找 2014 年 5 月 16 日的文件。

touch -d '16 May  2014' /tmp/Ref
touch -d '17 May  2014' /tmp/Ref2
find . -maxdepth 1   -newer /tmp/Ref -and -not -newer /tmp/Ref2

如果您对find 的结果感到满意,那么您可以像上面一样附加exec

【讨论】:

  • 不确定日期是否在文件名中 :-) 也许是 -ctime-cmin
  • @cadrian,很好。我以为他在搜索那个日期的名字。
  • @cadrian,在找出日期标志的正确语法后,我将把这个答案放回去。
猜你喜欢
  • 2016-05-18
  • 1970-01-01
  • 2012-01-13
  • 2014-01-30
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2014-12-04
  • 2012-11-29
相关资源
最近更新 更多