列出ls -1包含特定字符串并忽略特定字符串的文件

时间:2018-07-10 19:07:04

标签: linux ls

我有一个脚本,该脚本列出文件以查看是否存在。我可以选择一些文件,但是有些文件后缀为“(Demo)”,我想忽略它。我想列出所有包含“我需要帮助”的文件,但要忽略那些包含“演示”一词的文件。不幸的是,这行不通;

ls -1 "I Need Help"* --ignore=*Demo* 2>/dev/null

因为仍会列出一个名为“我需要帮助(演示)”的文件。 我需要这样做,因为有时“我需要帮助”的末尾会有多余的单词(例如“我需要帮助,请漂亮”,然后是“(演示)”后缀。有人可以在右边指出我吗?方向吗?非常感谢

2 个答案:

答案 0 :(得分:0)

Extended globbing

$ shopt -s extglob
$ ls "I Need Help"!(*Demo*)

答案 1 :(得分:0)

选项必须在任何文件名参数之前。

ls -1 --ignore="*Demo*" "I Need Help"*

但是,这将不起作用,因为--ignore仅过滤掉隐含的条目,而不过滤掉明确列为参数的名称。当您列出目录时,隐式条目就会出现,它将目录扩展到目录中的所有文件---ignore将从列表中过滤名称。

您可以将输出传递到另一个命令以过滤出这些行:

ls -1 "I Need Help"* | grep -v Demo