批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好 [論壇 - Ubuntu 與工具程式及軟體推薦]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

(1) 2 »


批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
會員二級
註冊日期:
2009/7/23 12:53
所屬群組:
已註冊使用者
等級: 8
HP : 0 / 194
MP : 32 / 8075
EXP: 78
離線
http://serverfault.com/questions/228733/how-to-rename-multiple-files-by-replacing-word-in-file-name

這個老外的例子很好,也正是我要的
但是我的檔名是取自shell script中的其他的變數(ex $name)
而且該變數中會有很多的unicode以及特殊字符(ex [2011])

請問該網頁中的很多shell script我要怎麼修正
才可以放到我的shell script中配合變數來使用,請大哥教教我

其實這個問題斷斷續續已經困擾了我4個月了
假日或是有時間就會做些測試

其他的較接近的方式我嘗試在我的shell script中用
rename.ul '$name' '$newname' /home/fy6877/test/final/*
或是
ls /home/fy6877/test/final/|xargs -I$ rename.ul '$name' '$newname' $
都沒有作用
($name,$newname都是檔名變數,含unicode或是各種特殊符號♫)
以上兩個方法是直接在終端下command可以成功更名但是放到script中就不能使用@@
我真的是黔驢技窮了

2012/9/29 18:08
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
管理員
註冊日期:
2012/1/14 18:41
所屬群組:
討論區管理群
等級: 20
HP : 0 / 480
MP : 159 / 16458
EXP: 23
離線
我目前取代都用sed,到還沒用過其他的東西。

2012/9/30 0:19
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
版主
註冊日期:
2008/7/14 0:03
來自 螢幕的另一端
所屬群組:
網站管理員
已註冊使用者
討論區管理群
等級: 33
HP : 0 / 810
MP : 514 / 36019
EXP: 40
離線
建議你把你有哪些檔名,要改成什麼樣的名稱都貼上來
有具體例子,才能思考怎麼解決

或是你把那些檔名都壓成一個檔上傳上來,然後告訴我們你想改成什麼檔名。
這樣才能去試試看

rename 是支援正規表示法的,你要改的檔名若能用正規表示法定義出來的話,那一行指令就解決了,不用寫什麼 script。

2012/9/30 0:27
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
會員二級
註冊日期:
2009/7/23 12:53
所屬群組:
已註冊使用者
等級: 8
HP : 0 / 194
MP : 32 / 8075
EXP: 78
離線
http://serverfault.com/questions/433230/how-to-rename-multiple-files-by-replacing-word-in-file-name-geting-from-the-shel

這個老外其實已經點明我的盲點了
我昨天發現一個很重要的問題是
rename 如果不用跳脫字元而是將字串用單引號' '可將字串視作為一個特殊字串來處理,rename 的參數不吃雙引號
ex:
rename.ul '[EAC][120328] 小倉結衣 - ☆Yui★DROPS☆ (flac+cue+bk).rar' 'WERDRTYYEW.' /home/fy6877/tset/final/"[EAC][120328] 小倉結衣 - ☆Yui★DROPS☆ (flac+cue+bk).rar".*


但是script裡面的變數不吃單引號'$name'會使變數失效只能用雙號
但是rename不吃雙引號,這時候就產生矛盾了

到頭來我只能用mv而已

老外的那些例子都需要針對字串加上跳脫字元才能做修正檔名
除非我變數的截取來源全部都在文字或空格前面加上跳脫字符這倒是可以試試看
有跳脫字符或許rename也可以用了
針對現有的文字檔全部字元前方都加上跳脫字符後回存或是另存檔案有辦法做到嗎?
可以的話我晚上再來試試看^^

2012/9/30 12:43
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
會員一級
註冊日期:
2012/9/30 23:13
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 0
MP : 0 / 21
EXP: 2
離線
看了一下 printf, 我猜想用 printf 去 escape filename 應該可以.

ex

echo `printf '%q' "lalala $LANG"`

所以就可以

mv "`printf '%q' "$F1"`" "`printf '%q' "$F2"`"

try 看看囉

2012/9/30 23:22
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
會員四級
註冊日期:
2010/8/12 15:54
所屬群組:
已註冊使用者
等級: 18
HP : 0 / 443
MP : 135 / 17014
EXP: 72
離線
老實說....
這麼多年來,我都是用 mv
根本當 rename 不存在

2012/10/1 11:51
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
會員五級
註冊日期:
2010/9/26 16:05
所屬群組:
已註冊使用者
等級: 27
HP : 0 / 660
MP : 317 / 25138
EXP: 43
離線
acman 寫到:
老實說....
這麼多年來,我都是用 mv
根本當 rename 不存在

不能同意你更多…

2012/10/1 12:10
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
會員一級
註冊日期:
2011/10/18 15:59
所屬群組:
已註冊使用者
等級: 3
HP : 0 / 70
MP : 8 / 2474
EXP: 83
離線
試試 pyrenamer 吧!?可以直接安裝唷0.0

sudo apt-get install pyrenamer

2012/10/2 17:47
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好
會員二級
註冊日期:
2009/7/23 12:53
所屬群組:
已註冊使用者
等級: 8
HP : 0 / 194
MP : 32 / 8075
EXP: 78
離線
感謝兩位大哥又提供另一個方式
可是script我看不太懂,請問有沒有簡單的註解可以讓我順便邊看邊學一下語法
我shell script不太會寫,所以很多東西有看沒有懂

放假兩天強迫自己google了很多鬼東西
發現很多command line丟到bash shell裡面寫法都不太一樣(邏輯不太相同)
有點苦惱
ex------->sed -e 's/a/b/g'
丟到shell裡面就變成sed -e "s/a/b/g"(我猜應該是要避開單引號的作用)

另外rar的comman在目標檔名是unicode時也不能只給予單檔資訊,要給壓縮軟體吃完整的路徑
這點和command line直接下參數"檔名"(當然檔案要在同一層)就可以拿來壓縮不同
ex------->rar a "$name".rar "$name",要改成

rar a "$name".rar /home/fy6877/test/final/"$name"

shell裡面很多時候都會碰到變形和一般終端的邏輯有些不同
大家能不能分享一下碰到要怎麼辦

像是rar那個例子因為要放上完整檔名才能使用
但是完整路徑又會被壓進壓縮包裡面(會變成5層目錄)
所以我被迫用munt把"$name"連到/下面的一個新增目錄來縮減sub folder的數量

我相信會去用script寫rar的人應該很少,碰到這個問題真不知道要和誰討論=.=

------------------------------------------
pyrenamer 似乎是用python寫的
應該很有強大,我找時間來試試看<(_ _)>

------------------------------------------
順道問一下大家,bash shell有沒有debug tool可以用
如果在撰寫/test過程中出現錯誤有損毀系統或檔案的風險時有什麼技巧可用嗎?
(腦袋閃過chroot)

2012/10/2 22:23
應用擴展 工具箱
回覆: 批量變更檔名部分字串(字串含unicode)請問要用什麼方法比較好

註冊日期:
2009/12/6 10:32
所屬群組:
已註冊使用者
等級: 71
HP : 1053 / 1756
MP : 4456 / 70921
EXP: 24
離線
bash shell有沒有debug tool可以用

Advanced Bash-Scripting Guide / Chapter 32. Debugging

2012/10/2 22:32
應用擴展 工具箱

(1) 2 »

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.