NAMES(3): file names and predicates __________________________________________________ SYNOPSYS path,predicate DESCRIPTION Many commands accept file names as arguments. A path name is / to refer to the root of the name space followed by one or more components (naming directories, except the last which might name a file). Path names not starting with / are understood as suffixes of the current directory (.). The name .. refers to the parent of the previous path (or the current directory if none). The parent of / is / itself. In most cases, file names given to commands are not just path names. Usually, they are a combination of a path name and a predicate separated by a comma (,) character. This combination is understood as a spec to search for and find matching files; commands rely on the [clive/zx(2)] Finder interface to issue the find request, and most of the times, they do so using the [clive/cmd(2)] pakcage. The file search always starts at the path name given before the comma, and proceeds within the subtree rooted there. All files matching the predicate are selected and processed by the command considered. An empty predicate is considered true, which means it selects all files within the subtree. For example, lf ., lists all files under the current directory, including also all directories and the current directory. If the predicate is not supplied (i.e., there is no comma ',' character), then only the name supplied is selected. For example lf . | ch 0775 changes the mode of the current directory, but lf ., | ch 0775 changes the mode for all files rooted at ., including .. An empty name is understood as '.'. Thus, lf , | ch 0775 is exactly the same command. A predicate is a boolean expression operating on directory entry attributes written in textual format. Besides the directory attribute names, the special name depth can be used to refer to the file depth in the tree rooted at the path used in the query. See dir(3) for a description of directory attributes. The following expressions can be used as predicates: true always evaluates to true false always evaluates to false name=value compares for equality the value of the attribute name with value as a string. =value the same thing using the path attribute if value starts with /, and the name attribute otherwise. d is understood as type=d, and the same goes for - and c. name==value compares the value of the attribute name with value as a number. name!=value compares for inequality the value of the attribute name with value as a string. Prunes the search if the attribute is name or path and matches the value. name~exp matches exp against the value of the attribute name using globbing. ~exp the same thing using the path attribute if value contains /, and the name attribute otherwise. name~~regexp matches regexp against the value of the attribute name. Prunes the search if the attribute is name or path and matches the value. ~~regexp the same thing using the path attribute if value starts with /, and the name attribute otherwise. name>value compares (as a number) for greater-than the value of the attribute name with value. name>=value compares (as a number) for greater-or-equal-to the value of the attribute name with value. name<value compares (as a number) for less-than the value of the attribute name with value. name<=value compares (as a number) for less-or-equal-to the value of the attribute name with value. number is understood as depth<=number prune fails and prunes the search when evaluated (child files are ignored). Also, if p1 and p2 are predicates, the following expressions can be used: p1&p2 true if both predicates are true. If the first is false the second is not evaluated. p1|p2 true if one of the predicates is true. If the first is true the second is not evaluated. !p1 true if the predicate is false. If p1 is comparing for equality or matching the name or path attributes and p1 is true, the search is pruned (and the predicate is false). (p1) exactly like p1 (but useful to change the evaluation order). Some operators have other names (as aliases) as described now. Although the aliases are preferred over the original names to save quotes in the shell, the original names can always be typed easily in most keyboards. +o The operator ',' is an alias of '&'. +o The operator ':' is an alias of ' | ' +o The operator '≈' is an alias of '~~'. +o The operator '≠' is an alias of '!='. +o The operator '≡' is an alias of '=='. +o The operator '≤' is an alias of '<='. +o The operator '≥' is an alias of '>='. The not operation has the higher precedence, then and and then or. Evaluation is left to right. EXAMPLES Similar to ls /*/*/foo in UNIX: l /,path~/*/*/foo Similar to find . -name '*.go' in UNIX: l ,~*.go SEE ALSO +o intro(1) +o dir(3) __________________________________________________ User's manual. Section 3. Copyright © LSUB 2014-2016