如何使用find在指定的子目录中查找文件

How to use find to find a file in specified subdirectory

我有多个网站使用我自己的模板,现在我更新了我的模板,我想使用查找更新模板。

如果我这样做

find . -name template.css -print -exec cp NEW_FILE {} \;

然后所有其他 template.css 将被覆盖。

我只希望 template.css 在目录 mytemplate/css 中时被覆盖。

有人有想法吗?

示例:

/site1/templates/mytemplate/css/template.css*
/site1/templates/othertemplate/css/template.css
/site1/templates/other2template/css/template.css
/site2/templates/mytemplate/css/template.css*
/site2/templates/othertemplate/css/template.css
/site2/templates/other2template/css/template.css
/site3/templates/mytemplate/css/template.css*
/site3/templates/othertemplate/css/template.css
/site3/templates/other2template/css/template.css

带 * 的文件应该只被覆盖

您可以使用 -wholename 标志和正确的正则表达式。这应该适用于您的示例:

find . -wholename "*/mytemplate/css/template.css" -print -exec cp NEW_FILE {} \;