2010-03-24 166 views
8

我在寫一個bash腳本,需要將字符串轉換爲小寫。問題是我在Mac上做這個'tr'不可用。我怎麼能在mac上做這個?大寫字母小寫bash在mac上

我試圖解決的問題是,我的腳本需要識別一個擴展名是.gif還是.jpg - 我不想檢查.jpeg,.jPeg ,. JPEG,.JPEG,等等等等......如果有這樣做不僅僅是轉換爲小寫和測試GIF,JPG和JPEG的更聰明的辦法,我所有的耳朵:)

UPDATE:
我我是個白癡。
這臺Mac「沒有」這些基本的文本轉換方案的原因是因爲我改寫路徑以「你好」做一些測試> _ <

+2

哪一個版本你用的是Mac的sion嗎? 10.6當然有'tr'。 – kennytm 2010-03-24 06:32:57

+0

10.5.8 ________ – Mala 2010-03-24 06:34:09

回答

10

在bash,你可以使用nocaseglob

shopt -s nocaseglob 
for file in *.jpg *.jpeg *.gif 
do 
    echo "$file" 
done 
#turn off 
shopt -u nocaseglob 

一般轉換的情況下,各種方式

echo "stRING" | awk '{print toupper($0)}' 

echo "STRING" | tr "[A-Z]" "[a-z]" # upper to lower 

echo "StrinNG" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' #lower to upper 
+0

這有什麼副作用?它會以不區分大小寫的方式讓bash匹配,直到我將它關閉爲止? – Mala 2010-03-24 06:36:17

+0

哦,我還需要在寫回來時以小寫形式取得擴展名......這是否對我有用? – Mala 2010-03-24 06:37:30

+0

啊,沒關係,我正在用這個和嵌套for循環:擴展在gif jpg jpeg中,用於*。$擴展名中的文件,[...]完成; 謝謝! – Mala 2010-03-24 06:41:22

2

在bash你可以使用利用

echo "HelLo! how ArE you?" | capitalize -u 

echo "HelLo! how ArE you?" | capitalize -l 

echo "HelLo! how ArE you?" | capitalize -c 
+3

在mac上,我收到「大寫:命令未找到」。 – ben3000 2016-10-08 03:18:35

+0

即使對於那些可能擁有它的人,如果您添加了這三個命令中的每一個的輸出,它也會很有用。 – 2017-08-28 19:52:51

4

這個內置的bash:

給$ y,轉換爲大寫:

y="this Is A test" 
echo "${y^^}" 

和$ Y轉換成小寫:

y="THIS IS a TeSt" 
echo "${y,,}" 
+5

沒有在我的優勝美地安裝..... 有一個「不好的替代」 任何想法? – MisterJ 2015-01-23 09:53:24

+1

@MisterJ我還沒有更新到優勝美地,但我懷疑它使用的版本與小牛隊的3.2.x版(約8歲)相似。不幸的是,這些case修改操作符在Bash 4中引入。我建議使用[''brew install bash''''](http://brew.sh/)來獲得一個現代版本。 – Exide 2015-01-29 19:18:28

+2

@在是的我確認優勝美地版本是舊的,我有其他類似的問題。用其他方法解決它們(比如這個很好的舊版本)。 – MisterJ 2015-01-30 09:48:07

0
$ echo 'this IS some TEXT' | tr '[:upper:]' '[:lower:]' 
this is some text