Bash 大量文件被logrotate错误重命名,压缩n次。正确重命名它们
Logrotate对已经存在的文件进行了n次压缩并错误地重命名 命名错误的文件示例如下:Bash 大量文件被logrotate错误重命名,压缩n次。正确重命名它们,bash,shell,awk,find,posix,Bash,Shell,Awk,Find,Posix,Logrotate对已经存在的文件进行了n次压缩并错误地重命名 命名错误的文件示例如下: v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz 我的意图是搜索每个文件(它们不一定被称为v_virtual),但我想要的是修改名称,在本例中保留主名称v_virtual,并带有日期和扩展名.gz 应该是这样的: v_virtual.log_2020-08-20.gz 该日期将是创建该文件的日期 我一直在通过使用awk、paste和其他方法将每个文件
v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz
我的意图是搜索每个文件(它们不一定被称为v_virtual),但我想要的是修改名称,在本例中保留主名称v_virtual
,并带有日期和扩展名.gz
应该是这样的:
v_virtual.log_2020-08-20.gz
该日期将是创建该文件的日期
我一直在通过使用awk、paste和其他方法将每个文件按名称分开,但我希望使用一个脚本来实现,这样可以使它更快
你能帮我一下吗?需要改进非平凡的文件名(
ls
不是最好的主意)
假设后缀模式始终为.1.gz
,脚本将递归地循环每个文件gunzip
,并从文件名中删除.1
,直到只剩下一个后缀。循环完成后,创建日期将添加到文件名中
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2 v_virtual.log.5.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1 v_virtual.log.5.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz
mv v_virtual.log.5.gz.1 v_virtual.log.5.gz
mv -b v_virtual.log.5.gz v_virtual.log_2020-08-20.gz
需要改进非平凡的文件名(
ls
不是最好的主意)
假设后缀模式始终为.1.gz
,脚本将递归地循环每个文件gunzip
,并从文件名中删除.1
,直到只剩下一个后缀。循环完成后,创建日期将添加到文件名中
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2.gz.1 v_virtual.log.5.gz.1.gz.1.gz.2.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz.2.gz
mv v_virtual.log.5.gz.1.gz.1.gz.2 v_virtual.log.5.gz.1.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz.1.gz
mv v_virtual.log.5.gz.1.gz.1 v_virtual.log.5.gz.1.gz
gzip -d v_virtual.log.5.gz.1.gz
mv v_virtual.log.5.gz.1 v_virtual.log.5.gz
mv -b v_virtual.log.5.gz v_virtual.log_2020-08-20.gz
您可以使用
sed
或rename
命令(如果它是基于perl的)搜索.gz
及其后的所有内容,并将其替换为.gz
我不知道gzip没有针对双重压缩的检查。您可以使用sed
或rename
命令(如果它是基于perl的)要搜索.gz
及其后的所有内容并将其替换为.gz
,我不知道gzip没有针对双重压缩的检查