利用shell脚本进行批量处理文件后缀名

 更新时间:2023年12月03日 09:35:12   作者:李昊哲小课  
这篇文章主要给大家介绍了关于如何使用shell脚本进行批量处理文件后缀名,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

shell脚本批量处理文件后缀名

flumes收集日常完成后会对收集的文件添加.COMPLETED后缀名。

我仍然使用原文件名,于是萌生了编写 shell 脚本批量删除文件后缀名的想法。

效果很好,但整个脚本功能太多单一,如果想按需修改文件后缀名呢?

于是编写了 shell 脚本批量修改文件后缀名。

shell脚本批量删除文件后缀名

批量删除文件后缀名·.COMPLETED

#!/bin/bash

input_dir=$1

if [ -z "$input_dir" ]; then
    echo "Usage: ./rename.sh input_directory"
    exit 1
fi

cd "$input_dir" || exit

for file in *.csv.COMPLETED; do
    newname=$(echo $file | sed 's/\.COMPLETED//')
    mv "$file" "$newname"
done

执行脚本

shell脚本批量修改文件后缀名

#!/bin/bash
# 检查参数数量是否正确
if [ "$#" -ne 3 ]; then
    echo "Usage: $0 <path> <old_extension> <new_extension>"
    exit 1
fi

# 提取参数
path=$1
old_extension=$2
new_extension=$3

# 查找并修改文件后缀名
find "$path" -type f -name "*.$old_extension" -exec sh -c 'mv "$0" "${0%.$1}.$2"' {} $old_extension $new_extension \;

执行脚本

shell脚本批量修改文件名(文件名中添加字符)

脚本1

[root@localhost ~]# cat 02.sh
#!/bin/bash
#written by mofansheng@2016-02-17
path=/goodboy
[ -d $path ] && cd $path
for file in `ls`
do
 mv $file `echo $file|sed 's/\(.*\)\.\(.*\)/\1_aaa.\2/g'`
done

解释说明:

使用sed替换,正则表达式第1个()括号里面代表文件名即\1;中间. 使用\进行脱意,代表分隔符;

第2个括号里面代表后缀html内容即\2;

使用此方法需要在替换中添加.符号;

脚本2:

#!/bin/bash
#written by mofansheng@2016-02-17
path=/goodboy
[ -d $path ] && cd $path
for file in `ls`
do
 mv $file `echo $file|sed 's/\(.*\)\(\..*\)/\1_aaa\2/g'`
done

解释说明:

同样使用sed替换,正则表达式,与上面的区别在于第2个括号里面的内容,代表.html 分隔符和后缀名为一体,替换内容的话不需要再单独加.点;.分隔符同样需要使用\进行脱意;

shell脚本批量修改文件名(删除文件名中字符)

方法一:for循环结合sed替换

[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file `echo $file|sed 's/_finished//g'`;done;

方法二:ls结合awk,输出交给bash执行

[baby@localhost ~]$ ls *.jpg |awk -F "_finished" '{print "mv "$0" "$1$2""}'|bash

实际执行的命令如下,以_finished作为分隔符,mv及变量 需要加双引号

[baby@localhost ~]$ ls *.jpg |awk -F "_finished" '{print "mv "$0" "$1$2""}'
mv stu_102999_1_finished.jpg stu_102999_1.jpg
mv stu_102999_2_finished.jpg stu_102999_2.jpg
mv stu_102999_3_finished.jpg stu_102999_3.jpg
mv stu_102999_4_finished.jpg stu_102999_4.jpg
mv stu_102999_5_finished.jpg stu_102999_5.jpg

方法三:rename改名

[baby@localhost ~]$ rename "_finished" "" *.jpg

方法四:for循环加变量部分截取

[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file `echo ${file%_finished*}.jpg`;done;

不使用echo也可以实现

[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file ${file%_finished*}.jpg;done;

到此这篇关于利用shell脚本进行批量处理文件后缀名的文章就介绍到这了,更多相关shell脚本处理文件后缀名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell脚本for循环实现文件和目录遍历

    shell脚本for循环实现文件和目录遍历

    本文主要介绍了shell脚本for循环实现文件和目录遍历,首先进行一个要遍历的文件夹,然后循环查看每个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • shell脚本通过expect实现自动单边无密登录功能

    shell脚本通过expect实现自动单边无密登录功能

    最近做项目需要实现单边无密登录功能,接下来小编给大家分享shell脚本通过expect实现自动单边无密登录功能,一起看看吧
    2017-01-01
  • shell脚本实现mysql定时备份、删除、恢复功能

    shell脚本实现mysql定时备份、删除、恢复功能

    这篇文章主要介绍了shell脚本实现mysql定时备份、删除、恢复功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • shell脚本操作oracle删除表空间、创建表空间、删除用户

    shell脚本操作oracle删除表空间、创建表空间、删除用户

    这篇文章主要介绍了使用shell脚本操作oracle删除表空间、创建表空间、删除用户的方法,需要的朋友可以参考下
    2014-03-03
  • shell 里面的奇葩字符实现

    shell 里面的奇葩字符实现

    这篇文章主要介绍了shell 里面的奇葩字符实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 一个简单的linux命令 cat

    一个简单的linux命令 cat

    这篇文章主要介绍了一个简单的linux命令cat,cat命令用来显示文件内容,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • shell脚本连接、读写、操作mysql数据库实例

    shell脚本连接、读写、操作mysql数据库实例

    这篇文章主要介绍了shell脚本连接、读写、操作mysql数据库实例,本文包含连接、读取、插入、创建数据库等操作示例,需要的朋友可以参考下
    2014-08-08
  • 探究正常运行的shell脚本为啥有时会报错

    探究正常运行的shell脚本为啥有时会报错

    正常运行的shell脚本为啥有时会报错呢,这篇文章主要就是来和大家探索一下报错的原因以及解决方法,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-08-08
  • Shell中的变量使用小结

    Shell中的变量使用小结

    这篇文章主要介绍了Shell中的变量使用小结,本文总结了变量的语法、常见使用形式等内容,并分别给出代码示例,需要的朋友可以参考下
    2015-05-05
  • Linux查看系统时间的详细方法总结

    Linux查看系统时间的详细方法总结

    系统时间是计算机硬件和软件运行的基础,在Linux系统中,查看系统时间是一项基本任务,本文将从多个方面介绍Linux查看系统时间的详细方法,需要的朋友可以参考下
    2023-09-09

最新评论