sh/bash/dash/ksh/zsh等Shell脚本
-
Dic4000
- 帖子: 104
- 注册时间: 2008-09-10 21:06
#1
帖子
由 Dic4000 » 2008-12-25 0:41
当前目录下有很多子目录和文件,子目录中又有子目录和文件。现在我想用ls命令查询后缀为txt的所有文件.
我在终端下输入
系统提示:ls: 无法访问*.txt: 没有该文件或目录,请问应该怎么写才行?
-
HuntXu
- 帖子: 5776
- 注册时间: 2007-09-29 3:09
#2
帖子
由 HuntXu » 2008-12-25 1:59
用find...
HUNT Unfortunately No Talent...
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#3
帖子
由 eexpress » 2008-12-25 9:20
ls */*/*.txt
也有一定的帮助的。自己控制目录深度。
其实,经常用到 ls */*.ini 这样的方法。
● 鸣学
-
tnfmg
- 帖子: 9
- 注册时间: 2008-11-18 18:43
#4
帖子
由 tnfmg » 2008-12-25 11:54
Dic4000 写了:当前目录下有很多子目录和文件,子目录中又有子目录和文件。现在我想用ls命令查询后缀为txt的所有文件.
我在终端下输入
系统提示:ls: 无法访问*.txt: 没有该文件或目录,请问应该怎么写才行?
也可以这么着,但还会列出包含少数txt字符的东西,虽然能列出lz想要的:
ls -lR | grep txt
-
Dic4000
- 帖子: 104
- 注册时间: 2008-09-10 21:06
#5
帖子
由 Dic4000 » 2008-12-26 0:49
我 参考了 tnfmg 的方法,用
代码: 全选
ls -R|grep -E '\w+\.txt'
可以比较精准的查询出来
但我用
代码: 全选
ls -R|grep -E '[\w]+\.txt'
就没有结果,请问为什么?
-
tnfmg
- 帖子: 9
- 注册时间: 2008-11-18 18:43
#6
帖子
由 tnfmg » 2008-12-27 12:27
Dic4000 写了:我 参考了 tnfmg 的方法,用
代码: 全选
ls -R|grep -E '\w+\.txt'
可以比较精准的查询出来
但我用
代码: 全选
ls -R|grep -E '[\w]+\.txt'
就没有结果,请问为什么?
饿……我学艺不精,只能给你点提示,无法周全:(
代码: 全选
ls -R|grep -E '\w+\.txt'
(\w) 匹配任何词语字元包括下划线。
(+) 匹配前面的字元一次或多次;
整个的意思是:搜寻包含--任意一个或多个 (+) 单字字元 (\w),并紧连着字符串.txt--的行。
这句表达的结果有时比不上ls -R | grep -E '*.txt'多,因为后者较多给出 中文.txt 的结果。
代码: 全选
ls -R|grep -E '[\w]+\.txt'
[\w] 表示输出的行里将包含有字符\或者字符w。
这里出现的语法错误在于特殊字符+上。