如何旧的文件移动到另一个文件夹(How to move old file to another fo

2019-07-31 02:38发布

我的文件夹中我有文件,该文件的后缀时,例如创建此文件日期:file.log2012-08-21,file.log2012-08-20 ...现在我怎么可以移动文件,该文件是旧的,然后2012-08- 20? 我知道我能做到这一点天天: mv file.log2012-08-19 /old/但我不知道何时停止......有一些参数命令MV做到这一点更容易?

Answer 1:

ls -l | awk '{print $NF}' | awk 'substr($0, length($0)-9, length($0)) < "2012-08-20" {system("mv "$0" /old/")}'

这将移动所有不是“2012-08-20”文件夹“/老”前辈的文件。 同样,你可以改变“2012-08-20”指定要特定的日期。 请注意,这假定该文件的后缀是一个日期戳,但前缀可以是任何名称。

如果你只需要移动超过一定天以上的文件,那么我认为rkyser的回答是更好。



Answer 2:

你可以使用find-mtime参数。 这假定上面提到的文件后缀的文件的时间戳相匹配。

  • -mtime +1意味着查找文件超过1日龄
  • -mtime -1手段查找文件小于1日龄
  • -mtime 1手段查找文件1日龄

实施例(更新):

find . -type f -mtime +1 -name "file.log*" -exec mv {} /old/ \;

或者,如果你只是想find在当前目录中只添加-maxdepth 1 (否则,它会递归搜索):

find . -maxdepth 1 -type f -mtime +1 -name "file.log*" -exec mv {} /old/ \;


Answer 3:

假设你的日志文件的最后一行写后不会被修改:

find . ! -newer file.log2012-08-20 | xargs -r -IX mv X /old/

注意:使用此命令file.log2012-08-20将被移动为好。 如果你不想要它,使用以前的文件:

find . ! -newer file.log2012-08-19 | xargs -r -IX mv X /old/


Answer 4:

您可能需要编写一个小脚本这一点。 如果你的文件是在一个特定的命名约定一样file.log2012-08-21 ,那么像这样的做的工作。

since=$(date --date="2012-08-20" +%s)
for file in `ls -1 --color=none`
do
    date=$(date --date="${file#file.log}" +%s)
    [ $date -lt $since ] && mv -v $file /old/
done

你真正做到这一点之前,它是改变mv命令来呼应,看是否要移动的文件是正确的一个好主意。



文章来源: How to move old file to another folder
标签: linux shell