请教用ls查询子目录中某个文件

sh/bash/dash/ksh/zsh等Shell脚本
回复
Dic4000
帖子: 104
注册时间: 2008-09-10 21:06

请教用ls查询子目录中某个文件

#1

帖子 Dic4000 » 2008-12-25 0:41

当前目录下有很多子目录和文件,子目录中又有子目录和文件。现在我想用ls命令查询后缀为txt的所有文件.
我在终端下输入

代码: 全选

ls -lR *.txt
系统提示:ls: 无法访问*.txt: 没有该文件或目录,请问应该怎么写才行?
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 请教用ls查询子目录中某个文件

#2

帖子 HuntXu » 2008-12-25 1:59

用find...
HUNT Unfortunately No Talent...
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教用ls查询子目录中某个文件

#3

帖子 eexpress » 2008-12-25 9:20

ls */*/*.txt
也有一定的帮助的。自己控制目录深度。

其实,经常用到 ls */*.ini 这样的方法。
● 鸣学
tnfmg
帖子: 9
注册时间: 2008-11-18 18:43

Re: 请教用ls查询子目录中某个文件

#4

帖子 tnfmg » 2008-12-25 11:54

Dic4000 写了:当前目录下有很多子目录和文件,子目录中又有子目录和文件。现在我想用ls命令查询后缀为txt的所有文件.
我在终端下输入

代码: 全选

ls -lR *.txt
系统提示:ls: 无法访问*.txt: 没有该文件或目录,请问应该怎么写才行?

也可以这么着,但还会列出包含少数txt字符的东西,虽然能列出lz想要的:
ls -lR | grep txt
Dic4000
帖子: 104
注册时间: 2008-09-10 21:06

Re: 请教用ls查询子目录中某个文件

#5

帖子 Dic4000 » 2008-12-26 0:49

我 参考了 tnfmg 的方法,用

代码: 全选

ls -R|grep -E '\w+\.txt' 
可以比较精准的查询出来
但我用

代码: 全选

ls -R|grep -E '[\w]+\.txt'
就没有结果,请问为什么? :em06
tnfmg
帖子: 9
注册时间: 2008-11-18 18:43

Re: 请教用ls查询子目录中某个文件

#6

帖子 tnfmg » 2008-12-27 12:27

Dic4000 写了:我 参考了 tnfmg 的方法,用

代码: 全选

ls -R|grep -E '\w+\.txt' 
可以比较精准的查询出来
但我用

代码: 全选

ls -R|grep -E '[\w]+\.txt'
就没有结果,请问为什么? :em06
饿……我学艺不精,只能给你点提示,无法周全:(

代码: 全选

ls -R|grep -E '\w+\.txt' 
(\w) 匹配任何词语字元包括下划线。
(+) 匹配前面的字元一次或多次;
整个的意思是:搜寻包含--任意一个或多个 (+) 单字字元 (\w),并紧连着字符串.txt--的行。
这句表达的结果有时比不上ls -R | grep -E '*.txt'多,因为后者较多给出 中文.txt 的结果。

代码: 全选

ls -R|grep -E '[\w]+\.txt'
[\w] 表示输出的行里将包含有字符\或者字符w。
这里出现的语法错误在于特殊字符+上。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 请教用ls查询子目录中某个文件

#7

帖子 aerofox » 2008-12-27 20:26

如果用 zsh,可以非常简单:

代码: 全选

ls **/*.txt
zhycomeon
帖子: 15
注册时间: 2008-07-24 14:15

Re: 请教用ls查询子目录中某个文件

#8

帖子 zhycomeon » 2008-12-29 19:26

find ./ -name *.txt
回复