iT邦幫忙

17

目錄下檔名所有空格、底線轉換成點的 script

  • 分享至 

  • xImage
  •  

常抓到的檔案中有空格或底線,
自己習慣都轉成以點來替代,
所以可用以下的script快速就更換過來。
檔名中所有的底線換成點:

#!/bin/bash
# 設成這個檔名 under2dot.sh
rename()
{
startDir=.

for arg in "$@" ; do
find $startDir \( -name "*_*" -o -name "*_*" \) -print |
while read old ; do
new=$(echo "$old" | tr -s '\011' ' ' | tr -s '_' '.')
mv "$old" "$new"
done
done
}
rename d f # Renames your directories with spaces first, then files

檔名中所有的空格轉換成點:

#!/bin/bash
# 設成這個檔名 space2dot.sh
rename()
{
startDir=.

for arg in "$@" ; do
find $startDir \( -name "* *" -o -name "* *" \) -print |
while read old ; do
new=$(echo "$old" | tr -s '\011' ' ' | tr -s ' ' '.')
mv "$old" "$new"
done
done
}
rename d f # Renames your directories with spaces first, then files

這個 script 是後面要加個檔名為參數用的:

#!/bin/bash
# 設成這個檔名 fspace2dot.sh
old=$1
new=$(echo "$old" | tr -s '\011' ' ' | tr -s ' ' '.')
mv "$old" "$new"

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
tom6507
iT邦大師 1 級 ‧ 2008-12-29 09:47:10

有空格或是底線通常都是不認得的字元,難道您都下載......

您多心了,現在的檔名都很長,不是都用空格或底線或點來做分隔嗎?
我是統一用點來儲存,免得相同檔案卻因不同的分隔符號造成重覆或找不到。
如果搜尋能夠略過 空格、底線、點 來做檔名的比對的話,就不用這麼麻煩了。

tom6507 iT邦大師 1 級 ‧ 2008-12-29 09:59:32 檢舉

那請問目錄名稱也可以轉換嗎

試了一下,目錄也可以。

0
richardhsieh
iT邦研究生 4 級 ‧ 2008-12-29 10:50:54

小弟都是用軟體作
可以試試用antrenemer
對程式苦手的我來說還挺方便的

分享的script是在linux上用的。
在windows上就沒有什麼好方法,除非裝cygwin之類,才能在XP上用shell script。
用google找不到 antrenemer 的相關結果,
敬請告知正確的名稱,好讓我參考,謝謝。

fillano iT邦超人 1 級 ‧ 2008-12-29 11:19:50 檢舉

應該是ant renamer吧?
另外我是覺得cygwin有點肥大,所以有需要我大概都會用msys跑shell script。

richardhsieh iT邦研究生 4 級 ‧ 2008-12-30 07:44:57 檢舉

一時筆誤
應該是Ant renamer

0
小成
iT邦高手 10 級 ‧ 2008-12-29 14:37:52

CMD下我是用一個爛方法...只能適用檔案裡有一個底線

<pre class="c" name="code">
dir /b *_* > filename.txt
for /f "tokens=1,2 delims=_ " %%I in (filename.txt) do ren %%I_%%J %%I.%%J

不知道有沒有高手想出比較好的...

不過如果真的有這個需求,寫程式還比較好做一點= =a

自己很主觀的感覺,原始windows的環境當中,有關處理字串及 regular expression 方面的功能很弱,以致想要做相關的功能受到相當大的限制及不便。
先進的 powershell 好像才有比較像樣的 regular expression 的處理能力…
古早以前曾用過 4DOS,以及現在發展下來的 4NT ,可能會較容易處理吧?
其實我也納悶,到底是因為傳統發展下來 *nix 的 shell 環境中,可能彈性空間比較大呢?還是因為累積了許多的 script 的範例可參考,才覺得能做的事多?往往想要找 windows 方面 script 的範例,相對比較起來就不易找到或者比較少。大概是因重於圖型環境,就減少了文字方面的發展吧。

0
fishk
iT邦大師 1 級 ‧ 2009-01-07 14:10:31

在windows下使用Ant renamer還蠻不賴的, 而且是完全免費而且還開放原始碼.
介紹網址分享如后:
http://blog.joaoko.net/archives/225

0

謝謝分享咯!

我要留言

立即登入留言