利用bash shell批量修改檔名
阿新 • • 發佈:2019-01-11
在百度雲盤上下載的檔名一般都是亂碼(如下圖),由於檔案太多,手動更改檔名有點麻煩,於是嘗試寫了一個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