将超过1小时的文件从一个目录移动到另一个目录 - AIX

时间:2016-11-17 14:05:18

标签: shell command-line aix

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

我试图运行的脚本是:

public int UserType;
public boolean IsCurrentlyTracking;

public UserInformation(int userType, boolean IsCurrentlyTracking){
    this.UserType = userType;
    this.IsCurrentlyTracking = IsCurrentlyTracking;
}

public int getUserType()
{
    return UserType;
}

public boolean getTrackingStatus()
{
    return IsCurrentlyTracking;
}

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

  

查找:错误的起始目录

我是shell脚本的新手。

任何帮助都将受到高度赞赏。

------------------被修改-----------------------

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

不要费心移动文件,只需直接在右侧文件夹中创建它们即可。怎么样?
让crontab每小时运行并创建一个目录/Directory/ABC-$(date +%Y%m%d_%H)。 现在在/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用户的正确权限。