find(1)'s -L and -delete not working well together (bin/90687)

Nikos Ntarmos ntarmos at ceid.upatras.gr
Mon Sep 3 20:41:25 PDT 2007


Hi there.

I just submitted the following as a followup to bin/90687. I'm also
posting it here should someone think it is important enough to go into
the upcoming 7.0 release, since bin/90687 has been buried for nearly two
years.

I just stumbled upon this issue while reading the manpage for find(1).
IMHO the fact that -delete turns -follow off is a good thing, so I
consider this more of a bug in the manpage. The included patch removes
the erroneous example and adds a word or two about -delete not honoring
-L. There is a mention of -delete not interacting well with options that
alter the traversal algorithm, but that is somewhat vague in this case.

--- find.1.diff begins here ---
Index: find.1
===================================================================
RCS file: /opt/freebsd/cvs/src/usr.bin/find/find.1,v
retrieving revision 1.82
diff -u -r1.82 find.1
--- find.1	28 Feb 2007 10:19:25 -0000	1.82
+++ find.1	4 Sep 2007 02:56:40 -0000
@@ -306,6 +306,24 @@
 .Dq Pa \&.
 for security reasons.
 Depth-first traversal processing is implied by this option.
+Moreover, beware that
+.Ic -delete
+does
+.Ar not
+honor the semantics of
+.Ic -L
+since it turns off following of symbolic links for security reasons.
+Thus,
+.Pp
+.Dl "find -L /usr/ports/packages -type l -delete"
+.Pp
+would delete
+.Ar all
+symbolic links under
+.Ar /usr/ports/packages
+as if
+.Ic -L
+had not been defined in the command line at all.
 .It Ic -depth
 Always true;
 same as the
@@ -843,9 +861,6 @@
 Use the
 .Xr echo 1
 command to print out a list of all the files.
-.It Li "find -L /usr/ports/packages -type l -delete"
-Delete all broken symbolic links in
-.Pa /usr/ports/packages .
 .It Li "find /usr/src -name CVS -prune -o -depth +6 -print"
 Find files and directories that are at least seven levels deep
 in the working directory
---- find.1.diff ends here ----

Cheers

\n\n


More information about the freebsd-current mailing list