如何制作脚本将比以前每天更旧的文件放入他们自己的文件夹中?

nLi*_*ked 6 command-line scripts automation files sort

我正在运行一个不必要的复杂脚本,它看起来类似于这个命令:

find /home/user/videos/*.avi -mtime +0 -exec mv -f {} "/home/nb/videos/1 day old" \;
Run Code Online (Sandbox Code Playgroud)

然后我运行相同的命令,但这次,从“1 天前”文件夹到“2 天前”文件夹。还有一些命令会一直重复到 7 天!因此,每天,前一个“X 天前”文件夹中的文件都会移动到第二天的文件夹中。

我基本上是在尝试自动组织文件,在 cron 中运行,将 X 天之前的文件移动到正确的文件夹中。它效率低下,但我确实需要这样做。有没有更简单、更有效的方法?

一旦到达 7 天前的文件夹,我就有了最后一个命令,可以从最后一个文件夹中删除 7 天前的文件。

arr*_*nge 3

我使用(对于类似的情况)一种非标准方式:logrotate

这会将所有视频备份到/home/user/videos文件中/home/nb/videos/backup/videos.tar(每天),然后自动将旧tar文件移动到等...1.tar...2.tar超过 7 天的备份将被删除。

我还mv /home/user/videos/*.avi /var/tmp保留了一份视频副本,以防出现问题。

要激活此 logrotate 配置,请将与此类似的文件放入目录中/etc/logrotate.d

/home/nb/videos/backup/videos.tar {
  rotate 7
  daily
  notifempty
  nocreate
  nocompress
  missingok

  postrotate
    if ls /home/user/videos/*.avi > /dev/null 2>&1; then
      tar cf /home/nb/videos/backup/videos.tar /home/user/videos/*.avi
      mv /home/user/videos/*.avi /var/tmp
    fi
  endscript
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅man logrotate