Web lists-archives.com

Re: An appropriate directory search tool?




On Fri, Oct 19, 2018 at 10:48:42AM -0500, David Wright wrote:
> find . -type f -exec chmod a-wx {} \;

For this one, you probably want to replace \; with + to get the efficiency
boost, which would be pretty significant here.  You probably wrote this
one a long time ago.

> find . -type f | while read file ; do bash-function "$file"; done # avoid using exec

This one has a few minor bugs.  It will fail on filenames that contain
newlines, or backslashes, or trailing whitespace, or leading whitespace.
It can be corrected, although sadly the corrected version is a bit uglier.

find . -type f -print0 | while IFS= read -rd '' file; do bash-function "$file"; done

> find . -type f -name \*ly -printf '%TY-%Tm-%Td %TT %f\n' | cut --complement -b 20-30 | sort

This one looks like a variant of my "rlart" function:

rlart() {
  find "${1:-.}" -type f -printf '%T@,%TY-%Tm-%Td,%TT,%p\0' |
  sort -zn |
  while IFS=, read -rd '' _ day time path; do
    printf '%s %s %s\n' "$day" "${time%.*}" "$path"
  done
}

I give a detailed explanation of an earlier iteration of that one on
<https://mywiki.wooledge.org/BashProgramming/03> for those who are
interested in that sort of thing.  The explicit comma delimiters were
added more recently, to avoid losing trailing whitespace.