使用find命令查找.sql和.sql.gz文件

塔伦

我有一个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因此,如何修改上面的代码,使其也包含此文件扩展名。谢谢。

约翰1024

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章