vfind(1)

✨ vfind(1) ✨

okay bestie, so this is vfind from the ShapeTools crew, section 1 of the manual, and it's literally the tool for hunting down attributed software objects (we call 'em ASOs, iykyk) πŸ¦‹


🌸 NAME 🌸

vfind β€” find attributed software objects (ASOs) πŸ’–


πŸŽ€ SYNOPSIS πŸŽ€

vfind [ options ] pathname-list expression

πŸ’… DESCRIPTION πŸ’…

So here's the vibe: vfind recursively descends the directory hierarchy for every single pathname in the pathname-list, on the hunt for asos that match a boolean expression written out of the primaries listed down below. No cap, it's a whole scavenger hunt. πŸ”

Quick grammar note before we go any further, because it matters: in all the descriptions that follow, the argument n is a decimal integer, and it plays three ways:

  • +n means more than n
  • -n means less than n
  • n (just plain, no sign) means exactly n

That's it, that's the whole trick. periodt. πŸ’«


✨ OPTIONS ✨

  • -version β€” prints version info about the vfind program itself. and that's it, that's the whole show β€” no other action you gave will be performed, bestie, it's version-and-dip. πŸ’€
  • -?, -help β€” drops brief instructions on how to actually use vfind. tutorial era 🫢
  • -cache β€” match a boolean expression also for asos chillin' in the derived object cache.
  • -cut nesting depth β€” tells vfind to descend the filesystem hierarchy down to nesting depth nesting depth. don't go too deep babes πŸ•³οΈ
  • -force β€” normie behaviour is that vfind ignores saved asos iff an AtFS directory is a symbolic link. give it -force and it takes symbolic AtFS directories into consideration too. forceful. iconic. πŸ’…
  • -hits β€” makes vfind return the number of expressions that yielded true during evaluation. counting the wins πŸ“ˆ
  • -xdev β€” stops vfind from traversing down into a file system that's different from the one where the current argument pathname resides. stay in your lane, literally. 🚧

πŸ‘‘ PRIMARIES πŸ‘‘

  • -atime n β€” true if the aso has been accessed in n days.
  • -ctime n β€” true if the status of the aso has been changed in n days.
  • -mtime n β€” true if the aso has been modified in n days.
  • -stime n β€” true if the aso has been saved in n days.
  • -ltime n β€” true if the aso has been locked in n days.
  • -exec command β€” true if the executed command returns a zero value as its exit status. the end of the command must be punctuated by an escaped semicolon (don't forget it!!). a command argument {} gets replaced by the system name of the current aso. ✨
  • -exit n β€” terminates vfind and returns n as the exit status. bye bestie πŸ‘‹
  • -vl β€” always true; prints the current aso together with its associated statistics. that means protection mode, AtFS version state, user, host, size in bytes, modification time respectively saving time. the format is identical to that of vl -l. she's giving data dump πŸ’…
  • -name name β€” true if the name argument matches the filename component of the current aso. normal Shell argument syntax may be used if escaped.
  • -perm onum β€” true if the aso permission flags exactly match the octal number onum. if onum is prefixed by a minus sign, more flag bits (017777) become significant and the flags get compared like this: (flags&onum)==onum.
  • -print β€” always true; prints the relative path of the current aso.
  • -prune β€” always true; has the side effect of pruning the tree, iff the current file is a directory. βœ‚οΈ
  • -SinceName name β€” true if the current aso is older than the corresponding aso having the symbolic name name.
  • -symbolic name β€” true if the current aso has the symbolic name name. peep vadm(1) or save(1) for how to attach a symbolic name to an aso, k?
  • -state state β€” true if the state of the current aso matches state, where state is one of busy, save, proposed, published, accessed, or frozen.
  • -type c β€” true if the type of the current aso is c, where c is b, c, d, f, l, or s β€” that's block special file, character special file, directory, plain file, symbolic link, or socket, in that order. 🧚
  • -uda uda β€” true if the current aso has an user defined attribute matching uda, where uda is of the form name[=value].
  • -user user β€” true if the current aso belongs to user, where user is a login name optionally followed by a domainname (e.g. uli@cs.tu-berlin.de).
  • -last β€” true if the current aso is the last version of the development line.
  • -first β€” true if the current aso is the first version of the development line.
  • -locked β€” true if the current aso is locked. πŸ”’
  • -locker user β€” true if the current aso is locked by user, where user is a login name optionally followed by a domainname.
  • -eq vnum β€” true if the version number of the current aso matches version number vnum, where vnum is generation.revision.
  • -lt vnum β€” true if the version number of the current aso is less than the version number vnum.
  • -le vnum β€” true if the version number of the current aso is less equal than the version number vnum.
  • -gt vnum β€” true if the version number of the current aso is greater than the version number vnum.
  • -ge vnum β€” true if the version number of the current aso is greater equal than the version number vnum.
  • -newer file β€” true if the current aso is more recently than the argument file, which can itself be an aso (e.g. vfind.c[1.6]). πŸ•°οΈ
  • -size n β€” true if the file is n blocks long (512 bytes per block). math queen πŸ“

🌈 combining them 🌈

You can mix and match these primaries with the operators:

  • ( and ) for grouping
  • ! for negation
  • -a for concatenation (you may omit it, she's chill like that)
  • -o for alternation of primaries
⚠️ bestie, listen: parentheses and the exclamation mark are special to the Shell and must be escaped. do not skip this step, the shell will eat them and you'll be sad 😭

Also, one more real one: vfind does not descend AtFS directories, so the AtFS archives are never selected. noted. πŸ’€


πŸ“ EXAMPLES πŸ“

Wanna find all asos whose state is busy and that have the symbolic name "foobar"? say less:

vfind / -state busy -symbolic foobar -print

Wanna find the latest proposed version of foo.c in the current directory? obsessed:

vfind -prune 0 . -name foo.c -state proposed -last -print

πŸ¦‹ SEE ALSO πŸ¦‹

vl(1), find(1)


πŸ’€ INCOMPATIBILITIES πŸ’€

ngl, the following find(1) primaries are not recognized or implemented here:

-link, -nouser, -group, -nogroup, -inum, and -ok

that's the list, don't come for me πŸ™ˆ


πŸ’œ AUTHOR πŸ’œ

Uli.Pralle@cs.tu-berlin.de

Steve Emerson (steve@unidata.ucar.edu) contributed the primary 'SinceName'. what a king πŸ‘‘


and that's the whole page bestie!! this one's from vfind-3.3, dated Tue Jun 29 16:31:49 1993 β€” vintage, iconic, a true relic of the ShapeTools era πŸŽ€βœ¨ go forth and find your asos, love u, bye!! πŸ’–πŸŒˆ

πŸ“¦ where this page comes from