- NAME
-
- gcloud beta topic filters - resource filters supplementary help
- DESCRIPTION
-
(BETA)Mostgcloudcommands return a list of resources on success. By default they are pretty-printed on the standard output. The--format=NAME[ATTRIBUTES](PROJECTION)and--filter=EXPRESSIONflags along with projections can be used to format and change the default output to a more meaningful result.Use the
--formatflag to change the default output format of a command. For details run $ gcloud topic formats.Use the
--filterflag to select resources to be listed. Resource filters are described in detail below.Use resource-keys to reach resource items through a unique path of names from the root. For details run $ gcloud topic resource-keys.
Use projections to list a subset of resource keys in a resource. For details run $ gcloud topic projections.
Note: To refer to a list of fields you can sort, filter, and format by for each resource, you can run a list command with the format set to
textorjson. For example, $ gcloud compute instances list --limit=1 --format=text.To work through an interactive tutorial about using the filter and format flags instead, see: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/GoogleCloudPlatform/cloud-shell-tutorials&page=editor&tutorial=cloudsdk/tutorial.md Note: Depending on the specific server API, filtering may be done entirely by the client, entirely by the server, or by a combination of both.
- Filter Expressions
-
A filter expression is a Boolean function that selects the resources to print
from a list of resources. Expressions are composed of terms connected by logic
operators.
LogicOperator-
Logic operators must be in uppercase:
AND,OR,NOT. Additionally, expressions containing bothANDandORmust be parenthesized to disambiguate precedence.NOTterm-1-
True if
term-1is False, otherwise False. term-1ANDterm-2-
True if both
term-1andterm-2are true. term-1ORterm-2-
True if at least one of
term-1orterm-2is true. term-1term-2-
Term conjunction (implicit
AND) is True if bothterm-1andterm-2are true. Conjunction has lower precedence thanOR.
Terms-
A term is a
keyoperatorvaluetuple, wherekeyis a dotted name that evaluates to the value of a resource attribute, andvaluemay be:number- integer or floating point numeric constant
unquoted literal- character sequence terminated by space, ( or )
quoted literal-
"…"or'…'Most filter expressions need to be quoted in shell commands. If you use
'…'shell quotes then use"…"filter string literal quotes and vice versa.
Operator Terms-
key:simple-pattern-
:operator evaluation is changing for consistency across Google APIs. The current default is deprecated and will be dropped shortly. A warning will be displayed when a --filter expression would return different matches using both the deprecated and new implementations.The current deprecated default is True if
keycontainssimple-pattern. The match is case insensitive. It allows one*that matches any sequence of 0 or more characters. If*is specified then the match is anchored, meaning all characters from the beginning and end of the value must match.The new implementation is True if
simple-patternmatches anywordinkey. Words are locale specific but typically consist of alpha-numeric characters. Non-word characters that do not appear insimple-patternare ignored. The matching is anchored and case insensitive. An optional trailing*does a word prefix match.Use
key:*to test ifkeyis defined and-key:*to test ifkeyis undefined. key:(simple-pattern…)-
True if
keymatches anysimple-patternin the (space, tab, newline, comma) separated list. key=value-
True if
keyis equal tovalue, or [deprecated] equivalent to:with the exception that the trailing*prefix match is not supported.For historical reasons, this operation currently behaves differently for different Google APIs. For many APIs, this is True if key is equal to value. For a few APIs, this is currently equivalent to
:, with the exception that the trailing*prefix match is not supported. However, this behaviour is being phased out, and use of=for those APIs is deprecated; for those APIs, if you want matching, you should use:instead of=, and if you want to test for equality, you can usekey<=valueANDkey>=value. key=(value…)-
True if
keyis equal to anyvaluein the (space, tab, newline,,) separated list. key!=value-
True if
keyis notvalue. Equivalent to -key=valueand NOTkey=value. key<value-
True if
keyis less thanvalue. If bothkeyandvalueare numeric then numeric comparison is used, otherwise lexicographic string comparison is used. key<=value-
True if
keyis less than or equal tovalue. If bothkeyandvalueare numeric then numeric comparison is used, otherwise lexicographic string comparison is used. key>=value-
True if
keyis greater than or equal tovalue. If bothkeyandvalueare numeric then numeric comparison is used, otherwise lexicographic string comparison is used. key>value-
True if
keyis greater thanvalue. If bothkeyandvalueare numeric then numeric comparison is used, otherwise lexicographic string comparison is used. key~value-
True if
keycontains a match for the RE (regular expression) patternvalue. Depending on your shell, you might have to escape or quote~to ensure it isn't consumed as HOME. key!~value-
True if
keydoes not contain a match for the RE (regular expression) patternvalue. Depending on your shell, you might have to escape or quote~to ensure it isn't consumed as HOME.
- Determine which fields are available for filtering
-
In order to build filters, it is often helpful to review some representative
fields returned from commands. One simple way to do this is to add
--format=yaml --limit=1to a command. With these flags, a single record is returned and its full contents are displayed as a YAML document. For example, a list of project fields could be generated by running:gcloud projects list --format=yaml --limit=1This might display the following data:
createTime: '2021-02-10T19:19:49.242Z' lifecycleState: ACTIVE name: MyProject parent: id: '123' type: folder projectId: my-project projectNumber: '456'
Using this data, one way of filtering projects is by their parent's ID by specifying
as theparent.idkey. - Filter on a custom or nested list in response
-
By default the filter expression operates on root level resources. In order to
filter on a nested list(not at the root level of the json) , one can use the
--flattenflag to provide a theresource-keyto list. For example, To list members undermy-projectthat have an editor role, one can run:gcloud projects get-iam-policy cloudsdktest --flatten=bindings --filter=bindings.role:roles/editor --format='value(bindings.members)' - EXAMPLES
-
List all Google Compute Engine instance resources:
gcloud compute instances listList Compute Engine instance resources that have machineType
f1-micro:gcloud compute instances list --filter="machineType:f1-micro"List Compute Engine instance resources using a regular expression for zone
usand not MachineTypef1-micro:gcloud compute instances list --filter="zone ~ us AND -machineType:f1-micro"List Compute Engine instance resources with tag
my-tag:gcloud compute instances list --filter="tags.items=my-tag"List Compute Engine instance resources with tag
my-tagormy-other-tag:gcloud compute instances list --filter="tags.items=(my-tag,my-other-tag)"List Compute Engine instance resources with tag
my-tagandmy-other-tag:gcloud compute instances list --filter="tags.items=my-tag AND tags.items=my-other-tag"List Compute Engine instance resources which either have tag
my-tagbut notmy-other-tagor have tagalternative-tag:gcloud compute instances list --filter="(tags.items=my-tag AND -tags.items=my-other-tag) OR tags.items=alternative-tag"List Compute Engine instance resources which contain the key
fingerprintin themetadataobject:gcloud compute instances list --limit=1 --filter="metadata.list(show="keys"):fingerprint"List Compute Engine instance resources with label
my-labelwith any value:gcloud compute instances list --filter="labels.my-label:*"List Container Registry images that have a tag with the value '30e5504145':
gcloud container images list-tags --filter="'tags:30e5504145'"The last example encloses the filter expression in single quotes because the value '30e5504145' could be interpreted as a number in scientific notation.
List in JSON format those projects where the labels match specific values (e.g. label.env is 'test' and label.version is alpha):
gcloud projects list --format="json" --filter="labels.env=test AND labels.version=alpha"List projects that were created on and after a specific date:
gcloud projects list --format="table(projectNumber,projectId,createTime)" --filter="createTime>=2018-01-15"List projects that were created on and after a specific date and time and sort from oldest to newest (with dates and times listed according to the local timezone):
gcloud projects list --format="table(projectNumber,projectId,createTime.date(tz=LOCAL))" --filter="createTime>=2018-01-15T12:00:00" --sort-by=createTimeList projects that were created within the last two weeks, using ISO8601 durations:
gcloud projects list --format="table(projectNumber,projectId,createTime)" --filter="createTime>-P2W"For more about ISO8601 durations, see: https://en.wikipedia.org/wiki/ISO_8601
The table below shows examples of pattern matching if used with the
:operator:PATTERN VALUE MATCHES DEPRECATED_MATCHES abc* abcpdqxyz True True abc abcpdqxyz False True pdq* abcpdqxyz False False pdq abcpdqxyz False True xyz* abcpdqxyz False False xyz abcpdqxyz False True * abcpdqxyz True True * (None) False False * ('') False False * (otherwise) True True abc* abc.pdq.xyz True True abc abc.pdq.xyz True True abc.pdq abc.pdq.xyz True True pdq* abc.pdq.xyz True False pdq abc.pdq.xyz True True pdq.xyz abc.pdq.xyz True True xyz* abc.pdq.xyz True False xyz abc.pdq.xyz True True - NOTES
-
This command is currently in beta and might change without notice. These
variants are also available:
gcloud topic filtersgcloud alpha topic filters
gcloud beta topic filters
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-07-22 UTC.