find2perl
translate find command lines to Perl code
Synopsis
find2perl [paths] [predicates] | perl
add an example, a script, a trick and tips
examples
source
.SUFFIXES: .c $(OBJ_EXT)
REALPERL = ../perl
CCCMD =
`sh $(shellflags) cflags
$@`
public = a2p s2p
find2perl
private =
pl =
find2perl.PL s2p.PL
plextract =
find2perl s2p
plexe =
find2perl.exe s2p.exe
plc =
find2perl.c s2p.c
source
public = a2p s2p
find2perl
private =
manpages = a2p.man
s2p.man
util =
sh = Makefile.SH
cflags.SH
shextract =
Makefile cflags
shextract =
Makefile cflags
pl =
find2perl.PL s2p.PL
plextract =
find2perl s2p
plexe =
find2perl.exe s2p.exe
plc = find2perl.c
s2p.c
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.