【问题标题】:Copying files based on modification date in Linux在 Linux 中根据修改日期复制文件
【发布时间】:2013-08-12 04:42:31
【问题描述】:

我想将最近三个月的文件从一个目录复制到另一个目录,但我发现使用以下命令只能列出文件。

find . -mtime -90 -ls

如何使用-mtime复制文件?

【问题讨论】:

    标签: linux bash cp


    【解决方案1】:

    find 使用-exec 选项:

    find . -mtime -90 -exec cp {} targetdir \;
    

    -exec 会将find 返回的每个结果复制到指定目录(上例中为targetdir)。

    【讨论】:

    • 好吧,我使用的是zshell。我所有的文件都消失了。我使用了mv 命令。
    • 如果要在一段时间内移动文件,请使用find . -type f time_criteria -exec mv -t target_dir {} +
    • @银巢在线:什么决定了周期? “time_criteria”是字面的吗?如果不是,语法/内容是什么?
    【解决方案2】:

    除了返回特定天数之外,还可以选择确切的日期和时间:

    cp  `find . -type f -newermt '18 sep 2016 20:05:00'` FOLDER
    

    以上将目录中2016年9月18日20:05:00之后创建的所有文件复制到FOLDER(今天前三个月:)

    小心使用 find 命令的符号。 不是这个:'

    就是这个,一个反引号:`

    日期选择是这样的:'

    如果您的文件名称中包含空格、换行符、制表符或通配符,您可以使用 Stéphane Chazelas 的任一解决方案。第一个是针对 GNU,第二个是针对 GNU 或一些 BSDs

    find . -type f -newermt '18 sep 2016 20:05:00' -exec cp -t FOLDER {} +
    find . -type f -newermt '18 sep 2016 20:05:00' -exec sh -c 'cp "$@" FOLDER' sh {} +
    

    【讨论】:

      【解决方案3】:

      我会先临时存储文件列表并使用循环。

      find . -mtime -90 -ls >/tmp/copy.todo.txt
      

      你可以阅读列表,如果它不是太大,用

      for f in `cat /tmp/copy.todo.txt`;
      do echo $f;
      done
      

      注意:cat... 周围的引号是反引号,通常位于键盘的左上角。

      然后您可以将echo 命令替换为复制命令:

      for f in `cat /tmp/copy.todo.txt`;
      do cp $f /some/directory/
      done
      

      【讨论】:

      • 在我的键盘上,反引号位于右上角。问号旁边。 (欧洲/北欧键盘)
      【解决方案4】:

      使用这个命令:

      for i in `ls -lrt | grep "jul" | awk '{print $9}' `; do cp $i* /some/folder/; done
      

      【讨论】:

        【解决方案5】:

        示例:选择日期 09/08/2017

        ls -l
         -rw-rw-rw-    1    root     system          943   Aug   09   02:59  File
        
        for j in `ls -l |awk '{ if ($7 == "09") print $9}'`
            do
                mv $j $Destination;
            done
        

        【讨论】:

        • 一个解释应该是有序的(特别是因为它似乎使用AWK 并且似乎推测了ls 的输出 - 例如,如果locale 是德语,它会起作用吗? ?)。
        猜你喜欢
        • 1970-01-01
        • 2023-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-10
        • 2015-02-19
        • 1970-01-01
        相关资源
        最近更新 更多