Shell 从命令行复制本月修改的所有文件

Shell 从命令行复制本月修改的所有文件,shell,grep,pipe,ls,Shell,Grep,Pipe,Ls,我想复制本月修改过的目录中的所有文件。我可以这样列出这些文件: ls -l * | grep Jul find $DIR -maxdepth 1 -type f -mtime -30 -exec cp {} $DEST/ \; 然后,为了复制它们,我试图通过xargs将结果导入cp,但没有成功(我想),因为我不知道如何解析ls-l输出来获取cp的文件名 我相信有很多方法可以做到这一点;我将给出正确的答案给那些能告诉我如何以这种方式解析ls-l的人(或者从这个位置上说服我),尽管我也有兴趣看

我想复制本月修改过的目录中的所有文件。我可以这样列出这些文件:

ls -l * | grep Jul 
find $DIR -maxdepth 1 -type f -mtime -30 -exec cp {} $DEST/ \;
然后,为了复制它们,我试图通过
xargs
将结果导入
cp
,但没有成功(我想),因为我不知道如何解析
ls-l
输出来获取
cp
的文件名

我相信有很多方法可以做到这一点;我将给出正确的答案给那些能告诉我如何以这种方式解析
ls-l
的人(或者从这个位置上说服我),尽管我也有兴趣看到其他方法


谢谢

当然,仅仅做
grep-Jul
是不好的,因为您可能会有文件名为
Jul

实际上,
find
可能是适合您工作的工具。大概是这样的:

ls -l * | grep Jul 
find $DIR -maxdepth 1 -type f -mtime -30 -exec cp {} $DEST/ \;
其中,
$DIR
是文件所在的目录(例如.),而
$DEST
是目标目录

  • -maxdepth 1
    标志意味着它不会在子目录中查找文件(不是递归的)

  • -type f
    标志表示它只查看常规文件(例如,不查看目录)

  • -mtime-30
    表示它查看修改时间超过30天的文件(+30将超过30天)

  • -exec
    标志表示它对每个文件执行以下命令,其中
    {}
    替换为文件名和
    \是命令的结尾


当然,仅仅做
grep-Jul
是不好的,因为您可能会有文件名为
Jul

实际上,
find
可能是适合您工作的工具。大概是这样的:

ls -l * | grep Jul 
find $DIR -maxdepth 1 -type f -mtime -30 -exec cp {} $DEST/ \;
其中,
$DIR
是文件所在的目录(例如.),而
$DEST
是目标目录

  • -maxdepth 1
    标志意味着它不会在子目录中查找文件(不是递归的)

  • -type f
    标志表示它只查看常规文件(例如,不查看目录)

  • -mtime-30
    表示它查看修改时间超过30天的文件(+30将超过30天)

  • -exec
    标志表示它对每个文件执行以下命令,其中
    {}
    替换为文件名和
    \是命令的结尾


有兴趣了解如何使用zsh实现这一点吗

ls -lt *.*(mM0)
上个月

ls -lt *.*(mM1)
或用于精确的日期范围

autoload -U age
ls -tl *.*(e#age 2014/06/07 now#)
ls -tl *.*(e#age 2014/06/01 2014/06/20#)

有兴趣了解如何使用zsh实现这一点吗

ls -lt *.*(mM0)
上个月

ls -lt *.*(mM1)
或用于精确的日期范围

autoload -U age
ls -tl *.*(e#age 2014/06/07 now#)
ls -tl *.*(e#age 2014/06/01 2014/06/20#)

谢谢你的详细回答;有道理。谢谢你的详细回答;有道理。