- NAME
-
- gcloud topic filters - resource filters supplementary help
- DESCRIPTION
- Most
gcloudcommands 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 abcabcpdqxyz False True pdq*abcpdqxyz False False pdqabcpdqxyz False True xyz*abcpdqxyz False False xyzabcpdqxyz False True *abcpdqxyz True True *(None) False False *('') False False *(otherwise) True True abc*abc.pdq.xyz True True abcabc.pdq.xyz True True abc.pdqabc.pdq.xyz True True pdq*abc.pdq.xyz True False pdqabc.pdq.xyz True True pdq.xyzabc.pdq.xyz True True xyz*abc.pdq.xyz True False xyzabc.pdq.xyz True True - NOTES
- These variants are also available:
gcloud alpha topic filtersgcloud beta topic filters
gcloud 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 2026-05-27 UTC.

