我创建了以下脚本,该脚本将在超过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
答案 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命令中排除它们。