当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : [问题]怎样判断一个文件名里是否包含某些扩展名?
帖子发表于 : 2007-05-19 17:52 

注册: 2006-02-28 22:30
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
将某些扩展名的文件比如.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


有啥别的好方法也行,谢了


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-05-19 18:22 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
for i in *txt *.c *.php


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-05-19 18:41 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
赞楼上,好思路
呵呵,我按照楼主的思路想了想,有这么个笨办法:
file 文件名 | awk -F ":" '{print $1}' |sed s'/.*\.//'


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-05-19 18:58 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
stufever 写道:
赞楼上,好思路
呵呵,我按照楼主的思路想了想,有这么个笨办法:
file 文件名 | awk -F ":" '{print $1}' |sed s'/.*\.//'

哪个sed能不能解释一下??


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-05-19 19:30 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
如果要直接判断。应该这样
${i##*.}
别跑远路了。哈哈。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-05-19 21:30 

注册: 2006-02-28 22:30
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
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:~$


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-05-19 23:24 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
是这样的啊。

i=sljlskdjlk.slkjlweej; echo ${i##*.}


_________________
● 鸣学


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-05-20 0:58 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
恩,呵呵,这个跟basename有点像哈!


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-05-20 1:05 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
wkt 写道:
哪个sed能不能解释一下??

把从开始到"."的所有字符替换掉,用什么替换呢,//代表空,就是把它们都删掉。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-05-20 1:12 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
是这样的啊。

i=sljlskdjlk.slkjlweej; echo ${i##*.}


恩,好方法。
意思就是在字符串i中,把和.最远匹配前的所有字符都截断。
如果i=file.txt.exe,呵呵,输出结果应该是exe。
${i#*.}的话,输出应该事txt.exe,事最近匹配。
把#换成%事从后匹配。


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-05-20 10:12 

注册: 2006-02-28 22:30
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
楼上几位都是高人啊

那能不能解释下 echo "abc.php" | grep "^[\w]+\.(php|css|txt|htm|html)$" 为什么没办法匹配呢?
搞不清楚心里总是不踏实


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2007-05-20 10:29 

注册: 2006-07-09 12:22
帖子: 1331
地址: 南京
送出感谢: 0 次
接收感谢: 1
kingstar 写道:
那能不能解释下 echo "abc.php" | grep "^[\w]+\.(php|css|txt|htm|html)$" 为什么没办法匹配呢?
搞不清楚心里总是不踏实


grep -e


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2007-05-20 10:57 

注册: 2006-02-28 22:30
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
我曾试过-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:~$


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2007-05-20 11:15 

注册: 2007-03-11 17:48
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
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

也就是说它是打印一行,而不是从一个字符串中匹配某个部分


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2007-05-23 0:01 

注册: 2006-02-28 22:30
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
[: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:~$


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译