---
name: "find2perl"
section: "1"
platform: "linux"
package: "perl"
version: "5.20.2-3+deb8u11"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/find2perl"
---

# find2perl(1)

translate find command lines to Perl code

## NAME

find2perl - translate find command lines to Perl code

## SYNOPSIS

```
        find2perl [paths] [predicates] | perl
```

## DESCRIPTION

find2perl is a little translator to convert find command lines to equivalent Perl code.  The resulting code is typically faster than running find itself.

"paths" are a set of paths where find2perl will start its searches and "predicates" are taken from the following list.

- "! PREDICATE"

  Negate the sense of the following predicate.  The `"!"` must be passed as a distinct argument, so it may need to be surrounded by whitespace and/or quoted from interpretation by the shell using a backslash (just as with using `find(1)`).

- "( PREDICATES )"

  Group the given PREDICATES.  The parentheses must be passed as distinct arguments, so they may need to be surrounded by whitespace and/or quoted from interpretation by the shell using a backslash (just as with using `find(1)`).

- "PREDICATE1 PREDICATE2"

  True if \_both\_ PREDICATE1 and PREDICATE2 are true; PREDICATE2 is not evaluated if PREDICATE1 is false.

- "PREDICATE1 -o PREDICATE2"

  True if either one of PREDICATE1 or PREDICATE2 is true; PREDICATE2 is not evaluated if PREDICATE1 is true.

- "-follow"

  Follow (dereference) symlinks.  The checking of file attributes depends on the position of the `"-follow"` option. If it precedes the file check option, an `"stat"` is done which means the file check applies to the file the symbolic link is pointing to. If `"-follow"` option follows the file check option, this now applies to the symbolic link itself, i.e. an `"lstat"` is done.

- "-depth"

  Change directory traversal algorithm from breadth-first to depth-first.

- "-prune"

  Do not descend into the directory currently matched.

- "-xdev"

  Do not traverse mount points (prunes search at mount-point directories).

- "-name GLOB"

  File name matches specified GLOB wildcard pattern.  GLOB may need to be quoted to avoid interpretation by the shell (just as with using `find(1)`).

- "-iname GLOB"

  Like `"-name"`, but the match is case insensitive.

- "-path GLOB"

  Path name matches specified GLOB wildcard pattern.

- "-ipath GLOB"

  Like `"-path"`, but the match is case insensitive.

- "-perm PERM"

  Low-order 9 bits of permission match octal value PERM.

- "-perm -PERM"

  The bits specified in PERM are all set in file's permissions.

- "-type X"

  The file's type matches perl's `"-X"` operator.

- "-fstype TYPE"

  Filesystem of current path is of type TYPE (only NFS/non-NFS distinction is implemented).

- "-user USER"

  True if USER is owner of file.

- "-group GROUP"

  True if file's group is GROUP.

- "-nouser"

  True if file's owner is not in password database.

- "-nogroup"

  True if file's group is not in group database.

- "-inum INUM"

  True file's inode number is INUM.

- "-links N"

  True if (hard) link count of file matches N (see below).

- "-size N"

  True if file's size matches N (see below) N is normally counted in 512-byte blocks, but a suffix of "c" specifies that size should be counted in characters (bytes) and a suffix of "k" specifies that size should be counted in 1024-byte blocks.

- "-atime N"

  True if last-access time of file matches N (measured in days) (see below).

- "-ctime N"

  True if last-changed time of file's inode matches N (measured in days, see below).

- "-mtime N"

  True if last-modified time of file matches N (measured in days, see below).

- "-newer FILE"

  True if last-modified time of file matches N.

- "-print"

  Print out path of file (always true). If none of `"-exec"`, `"-ls"`, `"-print0"`, or `"-ok"` is specified, then `"-print"` will be added implicitly.

- "-print0"

  Like -print, but terminates with \\0 instead of \\n.

- "-exec OPTIONS ;"

  *exec()* the arguments in OPTIONS in a subprocess; any occurrence of {} in OPTIONS will first be substituted with the path of the current file.  Note that the command "rm" has been special-cased to use perl's *unlink()* function instead (as an optimization).  The `";"` must be passed as a distinct argument, so it may need to be surrounded by whitespace and/or quoted from interpretation by the shell using a backslash (just as with using `find(1)`).

- "-ok OPTIONS ;"

  Like -exec, but first prompts user; if user's response does not begin with a y, skip the exec.  The `";"` must be passed as a distinct argument, so it may need to be surrounded by whitespace and/or quoted from interpretation by the shell using a backslash (just as with using `find(1)`).

- "-eval EXPR"

  Has the perl script *eval()* the EXPR.

- "-ls"

  Simulates `"-exec ls -dils {} ;"`

- "-tar FILE"

  Adds current output to tar-format FILE.

- "-cpio FILE"

  Adds current output to old-style cpio-format FILE.

- "-ncpio FILE"

  Adds current output to "new"-style cpio-format FILE.

Predicates which take a numeric argument N can come in three forms:

```
   * N is prefixed with a +: match values greater than N
   * N is prefixed with a -: match values less than N
   * N is not prefixed with either + or -: match only values equal to N
```

## SEE ALSO

find, File::Find.
