1. 程式人生 > >利用bash shell批量修改檔名

利用bash shell批量修改檔名

在百度雲盤上下載的檔名一般都是亂碼(如下圖),由於檔案太多,手動更改檔名有點麻煩,於是嘗試寫了一個bash指令碼來批量修改.

這裡寫圖片描述

bash指令碼檔案

#!/bin/bash
for files in `ls`
do
    # 擷取檔名的前兩個字元
    fname=${files:0:2}
    # 擷取檔案的後四個字元
    bname=${files:0-4}
    # 拼接成檔名
    filename=$fname$bname
    # 更改檔名
    mv $files $filename
done

注意在執行該指令碼檔案的時候使用下面的命令來執行:

bash 指令碼檔名
或者
sudo
chmod 777 指令碼檔名 ./指令碼檔名

不要使用下面的命令來執行:

sh 指令碼檔名

這會出錯:Bad substitution

修改完的效果:
這裡寫圖片描述

還可以自己指定檔案的名字(不需要從檔案中擷取)Bad substitution如下例子:

#!/bin/bash
cd 上冊
name=0
for files in `ls`
do
    # 指定字尾名
    hname=".mp4"
    # 指定檔名(這裡採用加1的方式)
    name=$(echo "$name + 1"|bc)
    # 拼接成完整檔名
    filename=$name$hname 
    # 修改檔名
mv $files $filename done