利用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脚本处理文件后缀名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux查看日志文件写入速度的4种方法详解

    Linux查看日志文件写入速度的4种方法详解

    有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的负载情况,因为一般情况下,日志写入越快,说明系统负载越重。本文总结了Linux中查看日志增长速度的几种方法,需要的可以参考一下
    2022-06-06
  • Linux启动jar包的shell脚本

    Linux启动jar包的shell脚本

    这篇文章主要介绍了Linux启动jar包的shell脚本,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • 使用shell脚本采集系统cpu、内存、磁盘、网络等信息

    使用shell脚本采集系统cpu、内存、磁盘、网络等信息

    这篇文章主要介绍了使用shell脚本采集系统cpu、内存、磁盘、网络等信息,需要的朋友可以参考下
    2014-05-05
  • Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点

    Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点

    这篇文章主要介绍了Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点,需要的朋友可以参考下
    2016-02-02
  • SHELL字符串提取的两种方法实现

    SHELL字符串提取的两种方法实现

    本文主要介绍了SHELL字符串提取的两种方法实现,主要包括:从指定位置开始截取和从指定字符(子字符串)开始截取,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Linux shell实现压缩多个文件代码实例

    Linux shell实现压缩多个文件代码实例

    这篇文章主要介绍了Linux shell实现压缩多个文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Linux使用shell扩展匹配文件名的方法详解

    Linux使用shell扩展匹配文件名的方法详解

    本文介绍了Bash中的命令行扩展,如大括号扩展、波形符扩展、路径名扩展、变量扩展、命令替换等,通过示例,展示了如何使用这些扩展功能创建目录、文件,管理和组织文件,使用通配符进行模式匹配,以及如何使用引号和转义字符防止参数扩展,需要的朋友可以参考下
    2026-04-04
  • shell脚本function传参的具体使用

    shell脚本function传参的具体使用

    本文主要介绍了shell脚本function传参的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Linux复制文件命令cp之使用解说

    Linux复制文件命令cp之使用解说

    Linux下的命令有很多,其中有一个命令,我一直使用都存在问题,那就是cp命令了。今天通过本文给大家介绍Linux复制文件命令cp之使用解说,感兴趣的朋友一起学习吧
    2016-11-11
  • Linux查看发行版信息的常用命令

    Linux查看发行版信息的常用命令

    这篇文章主要介绍了六种常用命令,用于查看Linux系统的发行版信息,包括查看/etc/os-release、使用lsb_release命令、查看/etc/issue文件、发行版特定文件以及使用hostnamectl命令,此外,还提到了查看内核版本的方法,需要的朋友可以参考下
    2026-03-03

最新评论