Unix Shell命令模式以列出文件,期望从模式中排除任何一个文件

3

我有以下命令,用于列出从cat1cat5的所有文件:

#ls cat[1-5]

我需要修改上面的命令,以列出除cat3之外的所有文件。

输出应该是cat1 cat2 cat4 cat5

另外,我正在尝试使用ls cat[1-10]列出从cat1到cat10的文件,但输出中只显示cat1

5个回答

2

通过这种方式,您可以排除任何字符列表:

ls cat[^3]

只有cat1、cat2、cat4和cat5被列出,但是其他文件没有使用这个命令列出。 - Balayesu Chilakalapudi
是的,因为您的文件夹中没有其他以“cat”开头的文件。 - MONTYHS
我正在尝试使用ls cat[1-10],但它只显示cat1,为什么呢? - Akash Sharma

0
ls | sed -e 's/\<cat3\>//g'

这个命令序列可以产生结果,其中cat3是一个文件名。


0

这可以通过以下两种方式来完成。

  1. ls cat[1245]
  2. ls cat[1-5] | grep -v cat3

0

您可以使用:

printf "%s\n" cat{1,2,4,5}

0
问题在于您正在使用正则表达式。因此,cat[1-10] 的意思是:所有名为cat0和cat1的文件,因为您只在括号内指定了这两个字符(正则表达式不知道数字,只知道字符和字符范围)。
为了显示从0到99999...的所有内容,您可以执行以下操作:
# ls cat[0-9]*

如果您想了解更多有关Bash中的正则表达式,请查看以下文档: http://linux.die.net/Bash-Beginners-Guide/sect_04_01.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接