URL: <https://savannah.gnu.org/bugs/?64100>
Summary: wish/request: please reserve -printf "%V %v %E %R %r %B %e %J %I %z %x %X %j" Group: findutils Submitter: raf Submitted: Sun 23 Apr 2023 11:57:45 PM UTC Category: find Severity: 3 - Normal Item Group: None Status: None Privacy: Public Assigned to: None Originator Name: raf Originator Email: Open/Closed: Open Release: None Discussion Lock: Any Fixed Release: None _______________________________________________________ Follow-up Comments: ------------------------------------------------------- Date: Sun 23 Apr 2023 11:57:45 PM UTC By: raf <raf> Hi, I've written a find-alternative called rawhide (rh) that does almost everything that GNU find can do (except file system type names), and can do a few additional things. Rawhide's version of -printf (its -L option) has some extra %-notation things that I'm hoping you will consider reserving for potential future use in find: %V The major device number of the device/filesystem that the file resides on (part of st_dev). %v The minor device number of the device/filesystem that the file resides on (part of st_dev). %E The device number of the file (st_rdev). This is only meaningful for character devices and block devices. See the related %R and %r format conversions (next) for the major and minor device numbers of the file. %R The major device number of the file (part of st_rdev). This is only meaningful for character devices and block devices. %r The minor device number of the file (part of st_rdev). This is only meaningful for character devices and block devices. %B The preferred block size for efficient I/O on the file's filesystem (st_blksize). On some filesystems (e.g., zfs), this is specific to each file, rather than to the whole filesystem. %e The ext2-style file attributes as a space-separated list of attribute names. This is available on Linux systems with libe2p. See chattr(1) and lsattr(1) for details. On other systems, this is the empty string. The possible ext2-style file attribute names are: secrm, unrm, compr, sync, immutable, append, nodump, noatime, dirty, comprblk, nocompr, encrypt, index, imagic, journal_data, notail, dirsync, topdir, huge_file, extents, verity, ea_inode, nocow, snapfile, dax, snapfile_deleted, snapfile_shrunk, inline_data, projinherit, and casefold. %J The ext2-style project number. This is available on Linux systems with libe2p. See chattr(1) and lsattr(1) for details. On other systems, this is the empty string. %I The ext2-style version/generation number. This is available on Linux systems with libe2p. See chattr(1) and lsattr(1) for details. On other systems, this is the empty string. %z The access control list (ACL) as a comma-separated list of items. This is available on Linux, FreeBSD, macOS, Solaris, and Cygwin. On systems without supported ACLs, this is the empty string. FreeBSD and Solaris have NFSv4 ACLs with two forms of ACL text. By default, the compact form will be output. With the -v option, the non-compact form will be output. For "POSIX" ACLs (Linux and Cygwin) and macOS ACLs, the -v option has no effect. On Solaris, ACLs are always present by default, even if they are trivially identical to the file permission bits. %x The extended attributes (EA) as a comma-separated list. This is available on Linux, FreeBSD, macOS, Solaris, and Cygwin. On systems without supported EAs, this is the empty string. %X The access control list/extended attributes (ACL/EA) indicator (like in rh -l). When a (non-trivial) ACL is present, this is a plus sign ("+"). When any (interesting) EAs are present, this is an at sign ("@"). When both are present, this is an asterisk character ("*"). When neither is present, but there is an selinux(8) context, this is a dot character ("."). When none of the above are present, this is a space character (" "). %j All of the file information in JSON format, representing an object with the following possible attributes: path (string) (same as %p) name (string) (same as %f) target (string) (same as %l) (only for symlinks) start (string) (same as %H) depth (integer) (same as %d) dev (integer) (same as %D) major (integer) (same as %V) minor (integer) (same as %v) ino (integer) (same as %i) mode (integer) (like %M, but in the underlying numeric form) modestr (string) (same as %M) type (string) (same as %y) perm (integer) (same as %m, but in decimal) nlink (integer) (same as %n) user (string) (same as %u) (only if a name is available) group (string) (same as %g) (only if a name is available) uid (integer) (same as %U) gid (integer) (same as %G) rdev (integer) (same as %E) rmajor (integer) (same as %R) rminor (integer) (same as %r) size (integer) (same as %s) blksize (integer) (same as %B) blocks (integer) (same as %b) atime (string) (like %a/%A@, but in ISO format) mtime (string) (like %t/%T@, but in ISO format) ctime (string) (like %c/%C@, but in ISO format) atime_unix (integer) (same as %A@) mtime_unix (integer) (same as %T@) ctime_unix (integer) (same as %C@) attributes (string) (same as %e) (only if available) project (integer) (same as %J) (only if available) generation (integer) (same as %I) (only if available) access_control_list (string) (like %z without the -v option, but not reformatted as a comma-separated list) (only if present) access_control_list_verbose (string) (like %z with the -v option, but not reformatted as a comma- separated list) (only if present) extended_attributes (string) (like %x, but not reformatted as a comma-separated list) (only if present) selinux_context (string) (same as %Z) (only if present) acl_ea_indicator (string) (same as %X) I'm not asking for any of this functionality to be added to GNU find. But if any of it ever does get added, please consider using the above %-notation so that the two programs remain in sync. It would be nicer that way for any users of both programs. Thanks. _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?64100> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/