2010-03-24 247 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