分页: 1 / 2
[问题]怎样判断一个文件名里是否包含某些扩展名?
发表于 : 2007-05-19 17:52
由 kingstar
将某些扩展名的文件比如.txt/.c/.php的文件编码格式转换,写了个小脚本,但是有句不会写,goolge了半天也没搞明白,大家帮我看一下
代码: 全选
for i in *
do
if $i的扩展名是 .txt/.c/.php #这句不会写
then
echo "change file $i"
iconv -f gbk -t utf-8 $i -o "$i.tmp"
rm -f $i
mv "$i.tmp" $i
fi
done
有啥别的好方法也行,谢了
发表于 : 2007-05-19 18:22
由 eexpress
for i in *txt *.c *.php
发表于 : 2007-05-19 18:41
由 stufever
赞楼上,好思路
呵呵,我按照楼主的思路想了想,有这么个笨办法:
file 文件名 | awk -F ":" '{print $1}' |sed s'/.*\.//'
发表于 : 2007-05-19 18:58
由 wkt
stufever 写了:赞楼上,好思路
呵呵,我按照楼主的思路想了想,有这么个笨办法:
file 文件名 | awk -F ":" '{print $1}' |sed s'/.*\.//'
哪个sed能不能解释一下??
发表于 : 2007-05-19 19:30
由 eexpress
如果要直接判断。应该这样
${i##*.}
别跑远路了。哈哈。
发表于 : 2007-05-19 21:30
由 kingstar
sed和${i##*.} 没看明白
我起初是想用grep来,但是除了第一个命令外,后面的正则表达式好像不好用
happy@happylinux:~$ echo "abc.php" | grep "php"
abc.php
happy@happylinux:~$ echo "abc.php" | grep "^[\w]+\.(php|css|txt|htm|html)$"
happy@happylinux:~$ echo "abc.php" | grep "(php|css)$"
happy@happylinux:~$ echo "abc.php" | grep "(php)$"
happy@happylinux:~$
发表于 : 2007-05-19 23:24
由 eexpress
是这样的啊。
i=sljlskdjlk.slkjlweej; echo ${i##*.}
发表于 : 2007-05-20 0:58
由 stufever
恩,呵呵,这个跟basename有点像哈!
发表于 : 2007-05-20 1:05
由 stufever
wkt 写了:
哪个sed能不能解释一下??
把从开始到"."的所有字符替换掉,用什么替换呢,//代表空,就是把它们都删掉。
发表于 : 2007-05-20 1:12
由 stufever
eexpress 写了:是这样的啊。
i=sljlskdjlk.slkjlweej; echo ${i##*.}
恩,好方法。
意思就是在字符串i中,把和.最远匹配前的所有字符都截断。
如果i=file.txt.exe,呵呵,输出结果应该是exe。
${i#*.}的话,输出应该事txt.exe,事最近匹配。
把#换成%事从后匹配。
发表于 : 2007-05-20 10:12
由 kingstar
楼上几位都是高人啊
那能不能解释下 echo "abc.php" | grep "^[\w]+\.(php|css|txt|htm|html)$" 为什么没办法匹配呢?
搞不清楚心里总是不踏实
发表于 : 2007-05-20 10:29
由 aBiNg
kingstar 写了:
那能不能解释下 echo "abc.php" | grep "^[\w]+\.(php|css|txt|htm|html)$" 为什么没办法匹配呢?
搞不清楚心里总是不踏实
grep
-e
发表于 : 2007-05-20 10:57
由 kingstar
我曾试过-e,好像没啥用
happy@happylinux:~$ echo "abc.php" | grep "^[\w]+\.(php|css|txt|htm|html)$"
happy@happylinux:~$ echo "abc.php" | grep -e "^[\w]+\.(php|css|txt|htm|html)$"
happy@happylinux:~$ echo "abc.php" | grep -e "php"
abc.php
happy@happylinux:~$ echo "abc.php" | grep "php"
abc.php
happy@happylinux:~$
发表于 : 2007-05-20 11:15
由 stufever
kingstar 写了:我曾试过-e,好像没啥用
happy@happylinux:~$ echo "abc.php" | grep "^[\w]+\.(php|css|txt|htm|html)$"
happy@happylinux:~$ echo "abc.php" | grep -e "^[\w]+\.(php|css|txt|htm|html)$"
happy@happylinux:~$ echo "abc.php" | grep -e "php"
abc.php
happy@happylinux:~$ echo "abc.php" | grep "php"
abc.php
happy@happylinux:~$
哦,为什么要用grep呢?
我刚才man了一下:
代码: 全选
grep, egrep, fgrep, rgrep - print lines matching a pattern
也就是说它是打印一行,而不是从一个字符串中匹配某个部分
发表于 : 2007-05-23 0:01
由 kingstar
[:alpha:]是可以的了,还没搞清楚
happy@happylinux:~$ echo "abc.php" | grep '^[[:alpha:]]\+\.\(php\|css\|txt\|htm\|html\)$'
abc.php
happy@happylinux:~$ echo "abc.php" | grep '^[\w]\+\.\(php\|css\|txt\|htm\|html\)$'
happy@happylinux:~$