我有一个shell脚本代码,用于查找.sql.gz
文件并移动它们:
find $Dir -type f -mtime $Time -name \*sql.gz | while read file
do
echo "Earlier $file will be moved to different folder." >> $Path_Log_File
mv -f $file $Path_Folder
done
现在,我的扩展名再加上几个文件,.sql
因此,如何修改上面的代码,使其也包含此文件扩展名。谢谢。
find提供一个“或”(-o)运算符:
find $Path_Backup_Dir -type f -mtime $Time \( -name \*sql.gz -o -name \*.sql \)
表达式之间的默认运算符为“和”(-a)。由于“和”比“或”具有更高的优先级,因此我们需要使用parens将两个“ -name”表达式分组在一起以得到正确的逻辑。由于炮弹通常会特别处理parens,因此我用反斜杠将其转义以保护它们。
另外,您可以使用正则表达式:
find $Path_Backup_Dir -type f -mtime $Time -regex '.*\.(sql|sql.gz)'
您还应该注意,您的find / read命令管道对具有特殊名称(前导空格,尾随空格,换行符等)的文件的响应不佳。例如,请参阅此Wiki,以了解解决此问题的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句