如何在Linux中移动N天前的文件? (linux 移动n天前文件)

在Linux中,经常需要按照时间规则去操作文件。比如,我们需要移动N天前的文件到特定目录下,或者删除N天前的文件等。本文将介绍如何在Linux中移动N天前的文件。

之一步:找到N天前的文件

在Linux中,你可以使用“find”命令来查找文件。find命令的格式如下:

find [查找路径] [查找条件] [操作]

比如,我们要查找30天前的文件:

find /path/to/search -type f -mtime +30

这条命令会查找指定路径下,所有类型是文件(-type f),最后一次修改时间距离今天30天以上(-mtime +30)的文件。

我们可以在终端中运行这个命令,看看它是否能够找到需要的文件:

find /path/to/search -type f -mtime +30 -ls

这个命令会列出所有符合条件的文件的详细信息。如果你只想看到它们的名称,可以使用下面的命令:

find /path/to/search -type f -mtime +30 -printf “%f\n”

这个命令只会输出文件的名称,每个文件名独立占一行。

第二步:移动N天前的文件

找到符合条件的文件之后,我们需要将它们移动到指定的目录下。

在Linux中,我们可以使用“mv”命令来移动文件。mv命令的格式如下:

mv [源文件路径] [目标路径]

比如,我们要将所有30天前的文件移动到“/path/to/target”目录下:

find /path/to/search -type f -mtime +30 -exec mv {} /path/to/target \;

这个命令会查找所有在“/path/to/search”下,最近修改时间30天以上的文件,并将它们移动到“/path/to/target”目录下。

需要注意的是,在找到符合条件的文件之后,通过“-exec”参数执行“mv”命令。在“-exec”参数后面的“{}”代表符合条件的文件名,而“\;”则表示命令结束。

第三步:自动执行

如果你要每天或每周定期移动N天前的文件,可以通过Linux的定时任务来完成。

我们可以使用crontab来指定定时任务:

crontab –e

这个命令会打开一个文本编辑器,并允许你编辑当前用户的crontab文件。在文件中,你可以指定需要执行的命令、日期、时间等。

比如,我们要每天凌晨2点执行上面的移动文件命令:

0 2 * * * find /path/to/search -type f -mtime +30 -exec mv {} /path/to/target \;

这个命令中,“0 2 * * *”表示每天凌晨2点,而“find /path/to/search -type f -mtime +30 -exec mv {} /path/to/target \;”则表示需要执行的命令。

保存crontab文件并退出编辑器。在指定的时间,系统会自动执行这个命令。

结论

这篇文章介绍了如何在Linux中移动N天前的文件。通过find和mv命令,我们可以轻松地查找符合条件的文件,并将它们移动到指定的目录下。当我们需要定期执行这个任务时,可以通过crontab来指定定时任务。希望这篇文章能够帮助你更好地管理Linux上的文件。

相关问题拓展阅读:

linux中如何将最近10天被修改过的所有文件复制到/backup

通过

电脑管家

工具箱的最近文档就行

这里面可以快速找到最近30天内含消唤打开过的电脑文档

然后还可以通过

小程序

,让手机和电脑之桥或间文档进行互传。谈凯

 这个是备份当前目录下的10天内修改的所有文件的脚本,你可以自己研究一下子。注释写的很详细

#  在一个燃碰扮经过tar和gzip处理过的文件目录中

# 备份10天当前目录下所有修改的文件.

BACKUPFILE=backup-$(date +%m-%d-%Y)

#  在备份文件中嵌入时间.

archive=${1:-$BACKUPFILE}

#  如果在命令行中没有指定备份文件的文件名,

# 那么将默认使用”backup-MM-DD-YYYY.tar.gz”.

tar cvf – `find . -mtime -10 -type f -print` > $archive.tar

#  ‘’内是find命令:皮灶.表示当前路径,

#+ -mtime -10表示那些最近10*24小时内被修改的文件,

#+ -type f表示一般的文件,

#+ -print 在标准输出中打印完整的文件名

gzip $archive.tar

echo “Directory $PWD backed up in archive file \”$archive.tar.gz\”.”

#  上边代码,#+ 如果在发现太多的文件的时候,或者是如果文件

#名包括空格的时候,将执行失败.

# Stephane Chazelas建议使用下边的两种代码之一

#

#   find . -mtime -1 -type f -print0 | xargs -0 tar rvf “$archive.tar”

#   -print0 在标准输出中打印完整的文件名,随后跟一个null字符吵租,

#  对应了xargs命令中的‘-0’选项.

#   使用gnu版本的find.

#   find . -mtime -1 -type f -exec tar rvf “$archive.tar” ‘{}’ \;

#   对于其他风格的UNIX便于移植,但是比较慢.

#

exit 0

#####################End Script#####################

find . -mtime 10 -daystart -exec cp -a {} /backup \;

解释:

-mtime 10 -daystart:从现在起前碧最近10天内修改过的文件

-exec:指定一条新命令

cp -a:递归复制

/backup:想要复制到的的目慧野举脊缓的目录

\;:为-exec命令的结尾标记符号

linux 定时删除n天前的文件crontab

先算数量,判断后再删

filenum=`find . -name “腊李册log.*” -mtime +10 | wc -l`

if ; then

filenum=`find . -name “log.*”扰简 -mtime +10 -exec rm -f {} \轮宏;

fi

linux 移动n天前文件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux 移动n天前文件,如何在Linux中移动N天前的文件?,linux中如何将最近10天被修改过的所有文件复制到/backup,linux 定时删除n天前的文件crontab的信息别忘了在本站进行查找喔。


数据运维技术 » 如何在Linux中移动N天前的文件? (linux 移动n天前文件)