Bash:没有这样的文件/目录错误

时间:2015-07-24 14:15:17

标签: bash archive

我创建了以下脚本,该脚本将在超过5天的两个目录中查找文件,压缩文件将被移动到另一个目录。 但是,如果在这两个目录中没有+5天的文件,我遇到了问题,我收到了错误

find: `/home/folder1/*.*': No such file or directory
find: `/home/folder2/*.*': No such file or directory
mv: cannot stat `/home/folder1/*.Z': No such file or directory
mv: cannot stat `/home/folder2/*.Z': No such file or directory

我的脚本是:

#!/bin/bash

find /home/folder1/*.* /home/folder2/*.* -type -f -mtime +5 -exec compress {} \;
mv /home/folder1/*.Z /home/folder1/archive

mv /home/folder2/*.Z /home/folder2/archive

1 个答案:

答案 0 :(得分:2)

x不需要那些整体来做你想要的事情(除非你试图专门忽略名字中没有find的文件)。你可以放弃它们。

.

然后,而不是盲目地在blob上使用find /home/folder1 /home/folder2 -type -f -mtime +5 -exec compress {} \; 来获取可能存在或不存在的文件,以便先测试它们(或使错误无声)。

mv

所有人都说# nullglob makes the globs result in empty strings instead of staying the glob when they don't match any files. shopt -s nullglob f1files=(/home/folder1/*.Z) if [ "${#f1files[@]}" -gt 0 ]; then mv "${f1files[@]}" /home/folder1/archive fi f2files=(/home/folder2/*.Z) if [ "${#f1files[@]}" -gt 0 ]; then mv "${f1files[@]}" /home/folder2/archive fi 命令正在以查找您在find下创建的.Z存档文件,并且/home/folder#/archive文件夹中重新压缩它们。 (除非archive足够智能,不对compress文件执行任何操作,但仍可在这些文件上运行。)

您几乎肯定会想要这样做,因此您需要使用您正在调用.Z的文件夹下的归档目录而不是来处理它通过专门从find命令中排除它们。