Skip to content

g.findfile

Searches for GRASS data base files and sets variables for the shell.

g.findfile [-nlt] element=string file=string [mapset=string] format=name [--verbose] [--quiet] [--qq] [--ui]

Example:

g.findfile element=string file=string format=shell

grass.script.parse_command("g.findfile", element, file, mapset=None, format="shell", flags=None, verbose=None, quiet=None, superquiet=None)

Example:

gs.parse_command("g.findfile", element="string", file="string", format="json")

grass.tools.Tools.g_findfile(element, file, mapset=None, format="shell", flags=None, verbose=None, quiet=None, superquiet=None)

Example:

tools = Tools()
tools.g_findfile(element="string", file="string", format="json")

This grass.tools API is experimental in version 8.5 and expected to be stable in version 8.6.

Parameters

element=string [required]
    Name of an element
file=string [required]
    Name of an existing map
mapset=string
    Name of a mapset (default: search path)
    '.' for current mapset
format=name [required]
    Output format
    Allowed values: shell, json
    Default: shell
    shell: shell script style output
    json: JSON (JavaScript Object Notation)
-n
    Do not add quotes
    Ignored when format is set to JSON
-l
    List available elements and exit
-t
    Return code 0 when file found, 1 otherwise
    Behave like the test utility, 0 for true, 1 for false, no output
--help
    Print usage summary
--verbose
    Verbose module output
--quiet
    Quiet module output
--qq
    Very quiet module output
--ui
    Force launching GUI dialog

element : str, required
    Name of an element
file : str, required
    Name of an existing map
mapset : str, optional
    Name of a mapset (default: search path)
    '.' for current mapset
format : str, required
    Output format
    Used as: name
    Allowed values: shell, json
    shell: shell script style output
    json: JSON (JavaScript Object Notation)
    Default: shell
flags : str, optional
    Allowed values: n, l, t
    n
        Do not add quotes
        Ignored when format is set to JSON
    l
        List available elements and exit
    t
        Return code 0 when file found, 1 otherwise
        Behave like the test utility, 0 for true, 1 for false, no output
verbose : bool, optional
    Verbose module output
    Default: None
quiet : bool, optional
    Quiet module output
    Default: None
superquiet : bool, optional
    Very quiet module output
    Default: None

element : str, required
    Name of an element
file : str, required
    Name of an existing map
mapset : str, optional
    Name of a mapset (default: search path)
    '.' for current mapset
format : str, required
    Output format
    Used as: name
    Allowed values: shell, json
    shell: shell script style output
    json: JSON (JavaScript Object Notation)
    Default: shell
flags : str, optional
    Allowed values: n, l, t
    n
        Do not add quotes
        Ignored when format is set to JSON
    l
        List available elements and exit
    t
        Return code 0 when file found, 1 otherwise
        Behave like the test utility, 0 for true, 1 for false, no output
verbose : bool, optional
    Verbose module output
    Default: None
quiet : bool, optional
    Quiet module output
    Default: None
superquiet : bool, optional
    Very quiet module output
    Default: None

Returns:

result : grass.tools.support.ToolResult | None
If the tool produces text as standard output, a ToolResult object will be returned. Otherwise, None will be returned.

DESCRIPTION

g.findfile is designed for Bourne shell or Python scripts that need to search for mapset elements, including: raster, vector maps, region definitions and imagery groups.

The list of element names to search for is not fixed; any subdirectory of the mapset directory is a valid element name.

However, the user can find the list of standard GRASS element names in the file $GISBASE/etc/element_list. This is the file which g.remove, g.rename and g.copy use to determine which files need to be deleted/renamed/copied for a given entity type.

NOTES

g.findfile writes four lines to standard output:

name='file_name'
mapset='mapset_name'
file='unix_filename'
fullname='grass_fullname'

The output is Bash commands to set the variable name to the GRASS data base file name, mapset to the mapset in which the file resides, and file to the full UNIX path name for the named file. These variables may be set in the Bash as follows:

eval `g.findfile element=name mapset=name file=name`

EXAMPLES

SHELL

Raster map example:

eval `g.findfile element=cell file=elevation`

If the specified file (here: raster map) does not exist, the variables will be set as follows:

name=
mapset=
fullname=
file=

The following is a way to test for this case:

if [ ! "$file" ]
then
    exit 1
fi

Vector map example (including error message):

eval `g.findfile element=vector file="$G_OPT_V_INPUT"`
if [ ! "$file" ] ; then
   g.message -e "Vector map <$G_OPT_V_INPUT> not found"
   exit 1
fi

PYTHON

See Python Scripting Library for more info.

Note: The Python tab in the wxGUI can be used for entering the following code:

import grass.script as gs

gs.find_file('elevation', element = 'cell')

Parsing JSON output:

import grass.script as gs

data = gs.parse_command("g.findfile", file="elevation", element="raster", format="json")
print(data)

Possible output:

{'name': 'elevation', 'mapset': 'PERMANENT', 'fullname': 'elevation@PERMANENT', 'file': '/grassdata/PERMANENT/cell/elevation'}

SEE ALSO

g.filename, g.gisenv, g.mapsets, g.parser

AUTHOR

Michael Shapiro, U.S.Army Construction Engineering Research Laboratory

SOURCE CODE

Available at: g.findfile source code (history)
Latest change: Friday Jul 25 17:02:43 2025 in commit f2e6221