Linux 是大小寫不同 (case-sensitive) 的系統,所以大小寫不同視為不同的檔案
只要改檔名就解決問題了,但是檔案有好幾百個,一個一個改真是浪費人生啊。
還好 Linux 提供了可以批次改大量檔名的指令 rename。
 
rename 指令是這麼用的:
 
$ rename oldname newname files
第一個參數是 “要被替換的字"
第二個參數是 “替換的字"
第三個參數是 “要被替換的檔案"
 
要改副檔名的話,可以下這樣的指令:
 
$ rename .txt .html *.txt
如此一來,所有的 .txt 文字檔都會改成 .html。以此類推
 
$ rename IMG img *.jpg
把照片的檔名改成小寫。這個指令也可以修改資料夾的名字,端看第三個指令怎麼篩選。

 
 
 
 
利用 find 指令找到多個符合條件的檔案,並使用 sed 做搜尋取代的動作
find . -type f -exec sed -e ‘s/cpu/memory/ig’ ‘{}’ \;
注意:使用 find 指令搭配 -exec 參數時,最後一個 \; 是非常重要的關鍵,一定要加上才能正常執行。
例子: 我要把目錄夾內所有檔案裡含有:G字串替換成空格(space) 指令如下
find . -type f -exec sed -e ‘s/:G//ig’ ‘{}’ \;
 
使用 sed 來批次修改
grep old_string -rl ./* | xargs sed -i “s/old_string/new_string/g"
sed -i “s/old_string/new_string/g" grep old_string -rl ./*
例如:
sed -i “s/11/xxx/g" grep 11 -rl ./*
grep xxxx -rl ./* | xargs sed -i “s/x/asdfadsfasdfafd/g"
 
使用 perl 來批次修改
perl -pi -e ‘s|old_string|new_string|g’ find ./ -type f
例如:
perl -pi -e ‘s|ISO-8859-1|UTF-8|g’ find ./ -type f
ERIC1969

Tags: , ,