2012-09-14 121 views
0

所以,我是新来的Linux,我努力学习echo命令echo命令行问题

我的第一个问题是,我试图显示在所有文件名(不是内容)而不该目录

extention .TXT的某个目录我想这 cd /directory/ | echo *.{txt}但它不工作

同样如果我想显示所有的文件名(不是内容)开始说“的”跟随由任何2个号码 我有 echo the[0-9][0-9]*但我不认为我得到的语法正确

最后,如果我想显示文件至少三个字符,但不是以“该”开头? ... < - 我不知道如何做到这一点

任何帮助和澄清会让我受益,提前致谢!

+0

当你说 “显示所有文件” 你的意思是,显示的列表文件名或显示文件的内容? – David

+0

显示其名称基本上 – Thatdude1

回答

0

我认为你需要列表命令(ls)或find命令,例如,

ls /some/path *.txt 


find /some/path *.txt 

ls相对简单但有限。 find稍微复杂一些,但功能更强大,灵活性更强。

1

什么你正在尝试做的可以通过使用合适的模式作为参数传递给ls命令来实现:至于echo而言

ls /directory/*.txt 

,它只是显示它的参数命令。

+0

这里是完全一样的。 'ls'命令将只列出已经由shell扩展的文件。 –

+0

好吧,不一样。 ls将每行列出一个文件。是否这是OP的需求我不知道:) –

+0

是的,我需要回声因为我只是想展示的争论 – Thatdude1

0
cd /directory/ && echo *.txt 

但这不是没有在那里。您可以

(cd /directory/ ; echo *.txt) 

如果您想要在命令执行后返回。

echo the{0..9}{0..9}* 
ls| grep -v ^the 

是的,如果你想要的文件的内容,你应该使用catecho而在最后一种情况下

cat $(ls|grep -v ^the) 

(注意,如果你的文件有空格,最后一个命令,而不是会变得更复杂)

+0

对不起,我不关心只是文件或文件夹名称的内容,也告诉这可以通过回声完成,但如果不是,我可以学习猫ls和grep – Thatdude1

+0

是的,回声是好的,只是读我的回答'是的,';-) –

+0

嗯即时尝试呼应{0..9} {0..9} *工作,但它没有,是因为它应该是一个破折号而不是两个点? – Thatdude1

0

如果你想显示文件的内容,你应该使用catcat /directory/*.txt和其他情况类似。

0

问题1:

ls /some/dir/*.txt 

问题2:

ls /some/dir/the[0-9][0-9]*.txt 

问题3:

ls /some/dir/*.txt | awk '{if(length($1) > 3 && substr($1,0,3) != "the"){print $1}}'