ls *.csv --ignore="*pattern*" 返回包含“pattern”的文件

ls *.csv --ignore="*pattern*" 返回包含“pattern”的文件

为什么ls --ignore不忽略模式?

看下面的例子:

mkdir books
cd books
touch books_abby.csv
touch books_karen.csv
touch books_david.csv
touch books_tom.csv

这将创建四个文件:

$ ls
books_abby.csv  books_david.csv  books_karen.csv  books_tom.csv

但是如果你想忽略所有包含“tom”的文件名并列出它们,books_tom.csv仍然会返回:

$ ls *.csv --ignore="*tom*"
books_abby.csv  books_david.csv  books_karen.csv  books_tom.csv

预期结果是省略包含“tom”的文件:

$ ls *.csv --ignore="*tom*"
books_abby.csv  books_david.csv  books_karen.csv

答案1

选项似乎--ignore没问题并且可以工作,但是当您在同一个命令中将ls它与混合使用时似乎会出现问题。*.csvls

因此,您可以使用以下命令获得相同的结果(因为所有文件都以 .csv 结尾):

$ ls *.csv --ignore="*tom*"
books_abby.csv  books_david.csv  books_karen.csv

如果您有其他文件扩展名不想显示在输出中,您可以尝试:

$ ls !(*tom*).csv
books_abby.csv  books_david.csv  books_karen.csv

相关内容