如何根据时间创建使用 awk 将文件复制到某个目录

如何根据时间创建使用 awk 将文件复制到某个目录

我尝试使用基于时间创建文件的 awk 过滤器将文件复制到目录

#!/bin/bash
dir=/home/resaputra23/pyexample/python2/*
des=/home/resaputra23/pyexample/backup/
file1= stat $dir | awk {'print $2'} | grep 2014

for i in $file1
do
cp $i $des || echo "unable to copy $i"
done

我得到输出

2014-12-02
2014-12-01
2014-12-28

但是$des中没有复制文件

答案1

尝试这个:

!/bin/bash
dir=/home/resaputra23/pyexample/python2/
des=/home/resaputra23/pyexample/backup/
#insert your prefered since date    
sincedate="2015-01-01"
find $dir -newermt "$sincedate" > files.txt
while read files; do
    cp $files $des
done < files.txt
rm -f files.txt

答案2

我建议使用find。以下命令将选择并移动所有文件。

find "$Dir" -newermt "1 Jen 2014" ! -newermt "1 Jen 2015" -exec cp {} $Dest \;

再说几句:一般来说,有很多原因为什么最好避免解析 ls 的输出,主要是因为文件名中最终存在空格或特殊字符。

摘录自man find,用于选项的使用-newerXY

-更新XY引用
将当前文件的时间戳与引用进行比较。引用参数通常是文件的名称(并且其中一个时间戳用于比较),但它也可能是描述绝对时间的字符串。X 和 Y 是其他字母的占位符,这些字母选择使用引用所属的哪个时间进行比较。

       a   The access time of the file reference  
       B   The birth time of the file reference  
       c   The inode status change time of reference  
       m   The modification time of the file reference  
       t   reference is interpreted directly as a time  

相关内容