分页: 1 / 1

有无引号,有什么区别

发表于 : 2009-10-20 9:25
onpduo
find ~ -name *.txt
只搜索到 /home/onpduo/tmp_file.txt,onpduo下的子目录没搜索
find ~ -name "*.txt"
搜索到一大串,包括隐藏的文件

引号有什么作用?

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

谢谢 :em11

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

发表于 : 2009-10-20 9:38
eexpress
-iregex 可能部分排除隐藏文件。

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

发表于 : 2009-10-20 10:06
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"

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

发表于 : 2009-10-20 20:03
onpduo
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

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

发表于 : 2009-10-21 9:07
t3swing

代码: 全选

find ~ -regex ".*/[^.]*\.txt" |sed -e '/\/\./d'
没考虑到隐藏文件夹里面包含txt的情况,去掉就可以了,不匹配字符串(/.)行的写法更简单