根据创建日期将文件移动到不同的文件夹

根据创建日期将文件移动到不同的文件夹

我从周一到周五创建了一组文件:

a -- > 08/20
a1---> 08/21
a2---> 08/21
a3---> 08/21
a4---> 08/22
a5 --> 08/23

我只需将 08/21 文件移动到另一个文件夹。

我怎样才能做到这一点?

答案1

我们假设保留文件的修改时间(文件在创建后不会被修改)。然后,您可以使用find命令和-mtime选项来搜索数据上次修改日期为X几天前的文件。因此,要查找当前工作目录中 48 小时前创建的所有文件,请使用

find ./ -type f -mtime 2

将它们移动到其他目录

find ./ -type f -mtime 2 -exec mv {} DEST_DIR/ \;

此外,您可以尝试估计当前日期和您请求文件的日期之间的天数(在本例中为 22)

DAY_CUR="`date +%d`"
DAY_REQ=22
DAY_DIF=$((DAY_CUR - DAY_REQ))
    
find ./ -type f -mtime $DAY_DIF -exec mv {} DEST_DIR/ \;

该代码并不完美,因为它不能处理这两天来自两个不同月份的情况,但它说明了如何继续。

答案2

因此您想根据文件的属性来移动文件。这意味着您必须识别或“查找”文件,然后将结果移动到不同的文件夹。

find 实用程序会做得很好:-)

find不带任何参数调用只会列出完整的文件夹内容。然后您可以指定各种过滤条件。有关完整列表,请参阅man findhttp://unixhelp.ed.ac.uk/CGI/man-cgi?find)。

这里有些例子:

  [..]
   -mmin n
      File's data was last modified n minutes ago.

   -mtime n
      File's  data was last modified n*24 hours ago.  See the comments
      for -atime to understand how rounding affects the interpretation
      of file modification times.

   -newer file
      File was modified more recently than file.  If file  is  a  sym-
      bolic  link and the -H option or the -L option is in effect, the
      modification time of the file it points to is always used.
  [..]

然后,您可以使用-exec来调用mv并用作{}当前文件的占位符。

例子: find /some/path/ -mtime +4 -exec mv {} /some/other/path/

专业提示:find无需致电-exec即可查看是否获得了正确的文件:-)

答案3

您可以使用该find命令来确定一天创建的文件,并使用文件名模式进一步限制搜索。使用文件中的-execin 。findmv

相关内容