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 

这会创build四个文件

 $ 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 

ls--ignore选项似乎可以正常工作,但是当您在同一个ls命令中将它与*.csv混合时,问题似乎就会出现。

所以,你可以使用相同的结果(因为所有的文件以.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