查找仅包含数字的扩展名的文件



我如何找到文件以" log"结尾。[一个或多个数字的数字]?

我在日志目录中有一个文件列表:

/user/log/log.1
/user/log/log.222
/user/log/log.201505
/user/log/log.2014.gz

我想gzip仅以数字结尾的文件,然后将它们移至bak目录:

/user/bak/log.1.gz
/user/bak/log.222.gz
/user/bak/log.201505.gz

是否有任何方法可以包含模式(log。[0-9]*),并使用 find / ls /同时排除数字以外的扩展名。 GREP 等?

另外,我的情况也要求我在其他服务器上执行上述日志的备份,我是否只使用

ssh $SERVER "command1;command2;..."

即使有循环?

也要完成这项工作

谢谢。

您可以将-regex标志用于find。您可能还需要-E才能将其解释为现代的扩展正则正则正则罚款。这样的东西:

find -E /user/log -regex '.*/log.[0-9]+'

使用bash扩展模式:

shopt -s extglob
numeric_extensions=( *.+([0-9]) )          # use an array for storage
printf "%sn" "${numeric_extensions[@]}"   # print the array contents

如果您不介意循环,这是一个主动性:

#!/bin/bash
for file in /user/log/*; do
if [[ -f $file ]]; then
ext="${file##*.}"
if [[ $ext =~ [0-9]$ ]]; then
#only files with numeric extention are available here
#put your gzip or whateve code here
fi
fi
done

这是您可以使用的单线。我已经在本地测试了执行。

find /user/log/ -type f -name "log.*[0-9]" -exec bash -c 'gzip "{}" && mv "{}.gz" "/user/bak/"' ;

您可能会使用以下SSH调用此:

ssh user@$SERVER 'find /user/log/ -type f -name "log.*[0-9]" -exec bash -c 'gzip "{}" && mv "{}.gz" "/user/bak/"' ;'

我想出了类似的正则言论:

^.+/log.[0-9]+

相关内容

  • 没有找到相关文章

最新更新