如何使用 find 命令忽略文件
How to ignore a file using find command
我正在尝试使用命令查找工件
名称:获取Java工件的路径
运行:echo JAVA_ARTIFACT=$(findbuild/libs/*.jar -type f) >>$GITHUB_ENV
问题是我在该目录中有 2 个工件
- build/libs/abc.jar
- build/libs/abc-plain.jar
我只想选择 abc.jar 个文件。
任何人都可以建议我如何实现这一目标吗?
find 命令支持标准的UNIX 正则表达式来匹配、包含或排除文件。您可以使用正则表达式轻松编写复杂的查询,同时发现该命令递归地下降列出的每个 /file/to/path 的目录树,评估表达式。
find
命令可以与正则表达式一起使用,可以轻松获得任何类型的复杂搜索结果。工作原理:
- 您必须将
find
命令与 -regex
一起使用,而不是 -name
。
- 您必须生成匹配的正则表达式
如何find
将文件名传递给正则表达式?
假设我们有以下目录结构:
/home/someone/build/libs/abc.jar
/home/someone/build/libs/abc-plain.jar
我们坐在 someone
如果我们在没有任何进一步参数的情况下执行 find .
,我们得到:
./build/libs/abc.jar
./build/libs/abc-plain.jar
因此我们可以使用正则表达式搜索:
- 有些东西以一个点开头
.
- 文件名中可能有一些额外的路径
- 不应在任意数量的字符中包含
-
字符
- 以
.jar
结尾
这导致:
- '.'
- '/*'
- '[^-]+'
- '.jar'
一起:
find . -regex '.*/[^-]+.jar'
或者如果您只想在 build/libs/
中搜索
find ./build/libs -regex '.*/[^-]+.jar'
你在那里找到 online regex tool。
由于您没有明确提到您不想在文件名中使用连字符 -
,因此我假设找到没有 -
.
的文件
我会尝试这样的事情。将 lower-case、upper-case、数字和 .jar
扩展名与 regex
相匹配。
find build/libs/ -regextype posix-egrep -regex '.*/[a-zA-Z0-9]+\.jar'
我在本地测试时得到低于输出。
touch abc.jar
touch abc-plain.jar
find . -regextype posix-egrep -regex '.*/[a-zA-Z0-9]+\.jar'
./abc.jar
你可以试试上面的命令here
我正在尝试使用命令查找工件
名称:获取Java工件的路径
运行:echo JAVA_ARTIFACT=$(findbuild/libs/*.jar -type f) >>$GITHUB_ENV
问题是我在该目录中有 2 个工件
- build/libs/abc.jar
- build/libs/abc-plain.jar
我只想选择 abc.jar 个文件。
任何人都可以建议我如何实现这一目标吗?
find 命令支持标准的UNIX 正则表达式来匹配、包含或排除文件。您可以使用正则表达式轻松编写复杂的查询,同时发现该命令递归地下降列出的每个 /file/to/path 的目录树,评估表达式。
find
命令可以与正则表达式一起使用,可以轻松获得任何类型的复杂搜索结果。工作原理:
- 您必须将
find
命令与-regex
一起使用,而不是-name
。 - 您必须生成匹配的正则表达式
如何find
将文件名传递给正则表达式?
假设我们有以下目录结构:
/home/someone/build/libs/abc.jar
/home/someone/build/libs/abc-plain.jar
我们坐在 someone
如果我们在没有任何进一步参数的情况下执行 find .
,我们得到:
./build/libs/abc.jar
./build/libs/abc-plain.jar
因此我们可以使用正则表达式搜索:
- 有些东西以一个点开头
.
- 文件名中可能有一些额外的路径
- 不应在任意数量的字符中包含
-
字符 - 以
.jar
结尾
这导致:
- '.'
- '/*'
- '[^-]+'
- '.jar'
一起:
find . -regex '.*/[^-]+.jar'
或者如果您只想在 build/libs/
find ./build/libs -regex '.*/[^-]+.jar'
你在那里找到 online regex tool。
由于您没有明确提到您不想在文件名中使用连字符 -
,因此我假设找到没有 -
.
我会尝试这样的事情。将 lower-case、upper-case、数字和 .jar
扩展名与 regex
相匹配。
find build/libs/ -regextype posix-egrep -regex '.*/[a-zA-Z0-9]+\.jar'
我在本地测试时得到低于输出。
touch abc.jar
touch abc-plain.jar
find . -regextype posix-egrep -regex '.*/[a-zA-Z0-9]+\.jar'
./abc.jar
你可以试试上面的命令here