【问题标题】:Moving files older than 1 hour from one directory to another - AIX将超过 1 小时的文件从一个目录移动到另一个目录 - AIX
【发布时间】:2017-04-01 02:48:19
【问题描述】:

我正在尝试将超过一小时的文件移动到 aix 中名称指定特定小时的另一个文件夹中,这些文件几乎每分钟都非常迅速地填充。

我试图运行的脚本是:

find /log/traces/ -type f -mmin +59 -exec mv '{}' /Directory \;

上面的脚本给了我一个错误:

查找:错误的起始目录

我是 shell 脚本的新手。

我们将不胜感激。

--------------------已编辑-----------

我已经能够移动超过 1 小时的文件,但如果指定的文件夹不存在,它会创建一个具有命令中指定名称的文件并转储其中的所有文件。我现在运行的脚本是:

find /log/traces -type f -mmin +59 -exec mv '{}' /Directory/ABC-$(date +%Y%m%d_%H) \;

它会创建一个名为 ABC-[当前时间] 的文件。我想创建一个目录并将所有文件移动到其中。

【问题讨论】:

  • 你能输出ls -l /log/traces的结果吗
  • 在脚本存在之前目录/Directory-(时间戳)是否存在?可能是没有移动文件的目录。
  • @randominstanceOfLivingThing 我得到了命令,它将文件移动到特定文件夹(如果该文件夹已经存在)。如果该文件夹不存在,它只会创建一个文件并转储该单个文件中的所有文件。即 'find /log/traces -type f -mmin +59 -exec mv '{}' /Directory/User\;'创建名为 user 的文件并将所有文件转储到该单个文件中。我需要用那个小时的文件创建文件夹。
  • 只需在当前命令的开头添加(前置)mkdir -p "/Directory/ABC-$(date +%Y%m%d_%H)";,如果该目录不存在,它将创建该目录。 (见 man mkdir
  • 希望$(date +%Y%m%d_%H) 在创建目录和移动文件之间应该是一样的。我更喜欢有一个 shell 脚本来捕获变量中的时间戳并执行创建和移动。

标签: shell command-line aix


【解决方案1】:

如果您不是以 root 用户身份运行,您可能会因为对 /log/traces/ 的读取权限而遇到此问题。

要查看此目录的权限级别,请运行ls -l /log/traces/,最左边的列将显示类似drwxr-xr-x 的内容,这是对该目录具有哪些权限设置的说明。要了解更多信息,请阅读this

您需要确保您正在执行命令的用户具有对/log/traces/ 的读取权限 - 这应该可以解决您的错误。

【讨论】:

  • 我得到了命令,它将文件移动到特定文件夹(如果该文件夹已经存在)。如果该文件夹不存在,它只会创建一个文件并转储该单个文件中的所有文件。即 'find /log/traces -type f -mmin +59 -exec mv '{}' /Directory/User\;'创建名为 user 的文件并将所有文件转储到该单个文件中。我需要用那个小时的文件创建文件夹。 @mixiul__
【解决方案2】:

在脚本存在之前目录/Directory- (Timestamp) 是否存在?我猜该目录不存在移动文件。在开始移动之前确保目录存在。

您可以创建一个用于移动文件的 shell 脚本,该脚本将目标目录作为参数以及文件名。 Tf 目标目录不存在,脚本会创建该目录。之后该脚本将执行mv 命令将文件移动到目标目录。

【讨论】:

    【解决方案3】:

    不要费心移动文件,直接在正确的文件夹中创建它们。怎么样?
    让 crontab 每小时运行一次并创建一个目录/Directory/ABC-$(date +%Y%m%d_%H)。 现在在/log/traces 和新目录之间建立一个符号链接。 当链接 /log/traces 已经存在时,您必须替换链接(而不是在子目录中创建链接)。

    newdir="/Directory/ABC-$(date +%Y%m%d_%H)"
    mkdir -p "${newdir}"
    ln -snf "${newdir} /log/traces
    

    第一次您需要mv /log/traces /log/traces_old 并在没有创建新文件的一小段时间内创建第一个链接。
    请先使用/log/testtraces 进行测试,检查crontab 用户的正确权限。

    【讨论】:

      猜你喜欢
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2021-11-12
      • 2016-06-09
      相关资源
      最近更新 更多