利用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命令切换目录的使用方法

    linux命令切换目录的使用方法

    切换目录的方式有很多种,最常用的莫过于cd 命令了,这里介绍四个命令pushd,popd,dirs,cd -的使用方法
    2014-01-01
  • Linux 使用shell脚本处理字符串的实现

    Linux 使用shell脚本处理字符串的实现

    这篇文章主要介绍了Linux 使用shell脚本处理字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • linux shell实现折线图代码实例

    linux shell实现折线图代码实例

    这篇文章主要给大家介绍了关于linux shell实现折线图的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用shell具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • shell通过遍历输出两个日期范围内所有日期的方法

    shell通过遍历输出两个日期范围内所有日期的方法

    这篇文章主要介绍了在shell通过遍历输出两个日期范围内所有日期的方法,文中给出了详细的示例代码以及实现思路流程,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • shell脚本中set -e选项作用范围小结

    shell脚本中set -e选项作用范围小结

    本文主要介绍了shell脚本中set -e选项作用范围小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 通过短信发送LOG归类号码发送情况的shell脚本

    通过短信发送LOG归类号码发送情况的shell脚本

    通过短信发送LOG归类号码发送情况的shell脚本,有需要的朋友可以参考下
    2013-02-02
  • Shell脚本中awk指令的用法

    Shell脚本中awk指令的用法

    今天小编就为大家分享一篇关于Shell脚本中awk指令的用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Linux下使用Rsync完成自动化备份

    Linux下使用Rsync完成自动化备份

    对于运维人员来说,数据备份是最重要的工作之一,rsync就是一款通过网络备份重要数据的工具/软件。
    2018-09-09
  • Shell脚本实现随机数多种方法介绍(date、random、uuid)

    Shell脚本实现随机数多种方法介绍(date、random、uuid)

    这篇文章主要介绍了Shell脚本实现随机数多种方法介绍,本文讲解了通过时间获得随机数、通过内部系统变量、通过系统内部唯一数据生成随机数等方法,需要的朋友可以参考下
    2014-11-11
  • linux shell命令快捷获得系统帮助(一)[man-pages定义规范]

    linux shell命令快捷获得系统帮助(一)[man-pages定义规范]

    linux命令帮助,一般有2种,命令自身代码里面带有使用帮助说明,这种一般很精简,太长了,程序自身的大小以及日常维护不方便。还有一种,就是带有帮助文件,类似windows的chm格式文件。下面我说下这2种怎么样查阅
    2015-10-10

最新评论