免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bclly
打印 上一主题 下一主题

[文件目录] bash中,如何准确判断某类型文件存在 [已解决] [复制链接]

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
11 [报告]
发表于 2014-07-15 10:02 |只看该作者
回复 8# bclly


    是我看错题意了

论坛徽章:
1
摩羯座
日期:2014-07-16 14:52:12
12 [报告]
发表于 2014-07-15 10:14 |只看该作者
回复 11# o枫叶o飘零


    没事的,谢谢你!

我现在就是不会写判断后缀名大小写的函数,大小写敏感这个让人头疼啊。

论坛徽章:
1
摩羯座
日期:2014-07-16 14:52:12
13 [报告]
发表于 2014-07-15 10:19 |只看该作者
本帖最后由 bclly 于 2014-07-15 10:21 编辑

回复 9# Herowinter


    你的意思是写成这样:exists_pattern_files *.[Gg][Ii][Ff] && echo "*.gif exists" || echo "*.gif not exists"

会不会不太科学?

    我看你在函数里是用了:grep -iq  这个的,忽略了大小写的

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
14 [报告]
发表于 2014-07-15 10:51 |只看该作者
本帖最后由 Herowinter 于 2014-07-15 11:02 编辑

回复 13# bclly

说实话,忽略大小写功能不难,不是很确定你要什么形式的。
看一下这样可以吗?
  1. [masonzhu@rat122 xxx]$ cat exists_pattern_files.sh
  2. #!/bin/bash

  3. pattern=`awk '{for(i=1;i<=length($0);i++){c=substr($0,i,1);if(c~/[A-Za-z]/)s=s"["toupper(c)tolower(c)"]";else s=s""c};print s}'<<<"$1"`

  4. exit `[ -e $pattern ]`

  5. [masonzhu@rat122 xxx]$ ./exists_pattern_files.sh *.gif && echo "*.gif exists" || echo "*.gif not exists"
  6. *.gif exists

  7. [masonzhu@rat122 xxx]$ ls
  8. a1.db  a3.db  a5.db    exists_pattern_files.sh   msyhbd.TTF  test.sh~  t.sh~
  9. a2.db  a4.db  abc.GiF
复制代码

论坛徽章:
1
摩羯座
日期:2014-07-16 14:52:12
15 [报告]
发表于 2014-07-15 11:22 |只看该作者
回复 14# Herowinter


    这个还是报错:

[root@hostname 桌面]# ls
2.sh  2.txt  3.sh  msyhbd.TTF  msyh.tTF  test.txt
[root@hostname 桌面]# chmod +x 3.sh
[root@hostname 桌面]# 3.sh *.ttf && echo "字体文件存在!" || echo "字体文件不存 在 !"
bash: !": event not found



3.sh的内容就是:
  1. #!/bin/bash

  2. pattern=`awk '{for(i=1;i<=length($0);i++){c=substr($0,i,1);if(c~/[A-Za-z]/)s=s"["toupper(c)""tolower(c)"]";else s=s""c};print s}'<<<"$1"`

  3. exit `[ -e $pattern ]`
复制代码
后面,我又直接把语句合并了一下:
  1. #!/bin/bash

  2. pattern=`awk '{for(i=1;i<=length($0);i++){c=substr($0,i,1);if(c~/[A-Za-z]/)s=s"["toupper(c)""tolower(c)"]";else s=s""c};print s}'<<<"$1"`

  3. $pattern *.ttf && echo "字体文件存在!" || echo "字体文件不存在 !"

复制代码
[root@hostname 桌面]# bash 3.sh
3.sh: line 5: *.ttf: command not found
字体文件不存在 !
[root@hostname 桌面]#


还是不行啊~

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
16 [报告]
发表于 2014-07-15 11:27 |只看该作者
本帖最后由 Herowinter 于 2014-07-15 11:30 编辑

回复 15# bclly

输出'!'这样写:
  1. ./exists_pattern_files.sh *.gif && echo '*.gif exists!' || echo '*.gif not exists!'
复制代码

论坛徽章:
0
17 [报告]
发表于 2014-07-15 12:47 |只看该作者
楼主这思路完全就是文不对题嘛,标题应该改成《bash中,如何准确判断某后缀文件存在》。
还是说,楼主觉得.gif改名为.txt,就不是原来那张图片文件了?

论坛徽章:
9
2015亚冠之大阪钢巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26处女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37双鱼座
日期:2014-07-25 10:09:54程序设计版块每日发帖之星
日期:2015-08-24 06:20:00
18 [报告]
发表于 2014-07-15 15:09 |只看该作者
  1. #!/bin/bash

  2. if [[ -f `pwd`/msyh.TTf  &&  -f `pwd`/msyhbd.TTF ]];then
  3.     echo "TTF存在!"
  4. else
  5.     echo "不存在,请先获取他们!"
  6.     read -n 1 -p "任意键退出本程序!"
  7.     exit 0;
  8. fi
复制代码
也可以 这样判断 [[ ]]  

论坛徽章:
0
19 [报告]
发表于 2014-07-15 16:59 |只看该作者
回复 19# Buring__

&&的意义是与还是或,是要两个同时成立还是只需要一个成立。||呢。

论坛徽章:
1
巨蟹座
日期:2014-06-10 23:03:47
20 [报告]
发表于 2014-07-15 17:12 |只看该作者
把函数这样改一下试试:
  1. exists_pattern_files(){   
  2.         ls | grep -iEq "$1";  
  3. }
复制代码
Herowinter 发表于 2014-07-15 09:55
回复 3# Kasiotao
如果改传入的参数$1,要改成这种模式呀*.[Gg][Ff],对于$1中的每一个字母,
都要改成大 ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP