sed 包含没有后缀的文件

sed 包含没有后缀的文件

我的 sed 命令似乎排除了没有后缀的文件

sed -i.bak 's>/media/colic/>/media/>g' *.*

包含“filename.sh”但不包含“filename”

sed -i.bak 's>/media/colic/>/media/>g' *

拉出 sed 帮助,表明我需要帮助(因此这个问题)

sed -i.bak 's>/media/colic/>/media/>g' '*'

告诉我没有找到文件

我可以继续猜测,但我觉得最好问我不明白的是什么。

答案1

*.*命令后面的字符串是一个通配模式,而不是正则表达式。它看起来很相似,但事实并非如此。例如,.在正则表达式中表示“任何字符”,而.在通配模式中表示“文字”。在?正则表达式中相当于“任何字符”。

所以在你的命令行中:

  1. *.*= 任何包含“.”的文件名被任何字符包围,
  2. *= 当前目录中的所有文件,以及
  3. '*'= 字面名称为*.

当我上面说“文件”时,它包括目录。谷歌“通配模式”以获取有关其语法的更多信息。

相关内容