加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

批量重命名具有不同扩展名Linux Script的多个文件?

发布时间:2020-12-14 01:22:56 所属栏目:Linux 来源:网络整理
导读:我想编写一个 linux脚本,将所有文件移动或复制到具有相同文件名(但扩展名不同)的文件到所有这些文件的新文件名,同时保持不同的扩展名.换一种说法: 如果我从目录列表开始: file1.txt,file1.jpg,file1.doc,file12.txt,file12.jpg,file12.doc 我想编写一个脚
我想编写一个 linux脚本,将所有文件移动或复制到具有相同文件名(但扩展名不同)的文件到所有这些文件的新文件名,同时保持不同的扩展名.换一种说法:

如果我从目录列表开始:

file1.txt,file1.jpg,file1.doc,file12.txt,file12.jpg,file12.doc

我想编写一个脚本来更改所有文件名而不更改扩展名.对于同一示例,选择file2作为新文件名,结果将是:

file2.txt,file2.jpg和file2.doc,file12.doc

因此,不会更改其文件名与当前条件不匹配的文件.

最好的祝愿,

乔治

解决方法

注意:如果变量i中有file1.doc,则表达式${i ## *.}在这种情况下提取扩展名,即doc.

一线解决方案:

for i in file1.*; do mv "$i" "file2.${i##*.}"; done

脚本:

#!/bin/sh
# first argument    - basename of files to be moved
# second arguments  - basename of destination files
if [ $# -ne 2 ]; then
    echo "Two arguments required."
    exit;
fi

for i in $1.*; do
    if [ -e "$i" ]; then
        mv "$i" "$2.${i##*.}"
        echo "$i to $2.${i##*.}";
    fi
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读