iT邦幫忙

0

請問FreeBSD中,如何修改大量檔案名稱?

各位先知:
小弟剛接觸 freebsd 不久,最近碰到一個問題如標題。
今天要將同一目錄中 QMxxx.doc (XX是流水號) 改成 LQMxxx.doc ?

因為 Freebsd 的 mv 目的地不能有 萬用字元?

不然要一筆一筆改很累 ~

8
逮丸逮丸
iT邦大師 1 級 ‧ 2011-07-15 16:02:07
最佳解答

這可以有很多的解法,
一般而言,
透過系統上很多的程式語言可做得到,
通常是利用 regular expression 來處理。
而你這問題要改的檔名不複雜;
用現有的工具就可快速完成:

<pre class="c" name="code">ls *.doc | awk '{print "mv "$0" L"$0}' > changeMe.sh

(或者 ls QM*.doc)
這樣 changeMe.sh 的內容會是:

<pre class="c" name="code">mv QM00.doc LQM00.doc
mv QM01.doc LQM01.doc
mv QM02.doc LQM02.doc

然後 sh changeMe.sh 就如您所願完工。

看更多先前的回應...收起先前的回應...
jccching iT邦新手 4 級 ‧ 2011-07-15 17:08:57 檢舉

真的好用的簡短 sh ,記下來,感恩 ~

jccching iT邦新手 4 級 ‧ 2011-07-15 17:12:44 檢舉

大大,那如果該資料夾有 .doc .exe .pdf 時,也是一樣的更改方式嗎?

jccching iT邦新手 4 級 ‧ 2011-07-15 17:16:14 檢舉

我試好了,謝謝

所提的「萬用字元」,算是 正則表達式 regular expression 裡一部份的簡化的運用。
也可參閱:有關 Regular Expression 正則表達式 的粗淺資源介紹
而 rename 也是 regex 的具體應用。
在 *nix 類的OS上,grep, sed, awk 都是內建的老工具,
一些問題,就可用簡單的語法就解決掉。
若要太複雜的語法,其實改用其他程式語言會比較省力,
只能說看狀況,運用不同的工具來處理。
可找一下 awk 的教學,一些單純的文字上的問題,
是方便的解決工具。

8
raytracy
iT邦大神 1 級 ‧ 2011-07-15 16:06:00

Linux 有這個指令可以用, 不知道 FreeBSD 有沒有:

<pre class="c" name="code">rename "QM" "LQM" QM*.doc

不曉得有此工具。
在 freebsd 有此 port:
http://www.freebsd.org/cgi/cvsweb.cgi/ports/sysutils/rename/

jccching iT邦新手 4 級 ‧ 2011-07-15 17:10:15 檢舉

和我第一直覺 rename 想的一樣,等等再安裝看看,看有沒有和 Linux 的 rename 一毛一樣了~

12
wiseguy
iT邦超人 1 級 ‧ 2011-07-15 23:17:41

一串命令搞定:

<pre class="c" name="code">ls -1 QM*.doc | sed 's/^\(QM\(.*\)\)$/\1 LQM\2/' | xargs -n 2 mv

這應該就等於樓上的 rename 了吧

看更多先前的回應...收起先前的回應...
raytracy iT邦大神 1 級 ‧ 2011-07-16 14:18:30 檢舉

恩....Unxi 真好玩, 同樣一個問題, 大家的解法都不一樣, 考驗每個人的創意能力...

wiseguy iT邦超人 1 級 ‧ 2011-07-16 17:00:57 檢舉

這是 *nux 文字命令模式的威力,可以用一連串的命令藉著管道,串成想要的效果。
windows 視窗雖然美觀,但最終在一些軟體開發上,不得不推出 PowerShell 這種仿傚 *nux 文字命令的功能。顯見 windows GUI 再怎麼美觀,也不可能取代命令模式。
http://www.microsoft.com/taiwan/technet/columns/profwin/28-monad.mspx

wiseguy iT邦超人 1 級 ‧ 2011-07-16 17:08:42 檢舉

哦!還有一個更重要的就是 Regular Expression 通用表示法。
這真是無敵好用的法寶,凡舉尋找、代換、分割、過濾檢查 ... 真是好用到一個不行。
RD 若精通此技術,工作效率至少可以增加 20%~40%。
通常我面試的 RD 若連這法寶都不知為何物時,大概也知道此人的斤兩了。

jccching iT邦新手 4 級 ‧ 2011-07-18 09:20:21 檢舉

是呀,看來我要多多和各位大大學習了 ~

我要發表回答

立即登入回答