有无引号,有什么区别

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
onpduo
帖子: 51
注册时间: 2009-07-23 22:22

有无引号,有什么区别

#1

帖子 onpduo » 2009-10-20 9:25

find ~ -name *.txt
只搜索到 /home/onpduo/tmp_file.txt,onpduo下的子目录没搜索
find ~ -name "*.txt"
搜索到一大串,包括隐藏的文件

引号有什么作用?

另外怎样不搜索隐藏文件,加什么参数?

谢谢 :em11
Back to Fedora from Archlinux...
吾辈乃水人一枚,潜水日久。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 有无引号,有什么区别

#2

帖子 eexpress » 2009-10-20 9:38

-iregex 可能部分排除隐藏文件。
● 鸣学
t3swing
帖子: 1028
注册时间: 2008-11-01 21:42
来自: 树下板凳

Re: 有无引号,有什么区别

#3

帖子 t3swing » 2009-10-20 10:06

你再在onpduo下再建一个a.txt试试
find ~ -name *.txt相当于find ~ -name tmp_file.txt a.txt 会报错
find ~ -name "*.txt" 则是正确的搜索命令
再例如,ls *.txt 和ls “*.txt" (先用touch "*.txt"建一个*.txt文件),你会发现区别
就是说命令被执行之前,shell先对命令处理替换扩展(如 不在引号中的*会进行扩展) ,完成后再交给find 或者ls 等命令处理,引号在这里可以理解为屏蔽shell对命令的扩展处理。

代码: 全选

find ~ -regex ".*/[^.]*\.txt"
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。
头像
onpduo
帖子: 51
注册时间: 2009-07-23 22:22

Re: 有无引号,有什么区别

#4

帖子 onpduo » 2009-10-20 20:03

t3swing 写了:你再在onpduo下再建一个a.txt试试
find ~ -name *.txt相当于find ~ -name tmp_file.txt a.txt 会报错
find ~ -name "*.txt" 则是正确的搜索命令
再例如,ls *.txt 和ls “*.txt" (先用touch "*.txt"建一个*.txt文件),你会发现区别
就是说命令被执行之前,shell先对命令处理替换扩展(如 不在引号中的*会进行扩展) ,完成后再交给find 或者ls 等命令处理,引号在这里可以理解为屏蔽shell对命令的扩展处理。

代码: 全选

find ~ -regex ".*/[^.]*\.txt"
谢谢~大概清楚了,不过你写的正则表达式还是会有隐藏文件 :em01
Back to Fedora from Archlinux...
吾辈乃水人一枚,潜水日久。
t3swing
帖子: 1028
注册时间: 2008-11-01 21:42
来自: 树下板凳

Re: 有无引号,有什么区别

#5

帖子 t3swing » 2009-10-21 9:07

代码: 全选

find ~ -regex ".*/[^.]*\.txt" |sed -e '/\/\./d'
没考虑到隐藏文件夹里面包含txt的情况,去掉就可以了,不匹配字符串(/.)行的写法更简单
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。
回复