Re: [bug #46791] wishlist: no option to find devices for major/minor

raf <[email protected]>
Newsgroups gmane.comp.gnu.findutils.bugs
Message-ID <[email protected]>
On Mon, Jan 06, 2025 at 04:56:05PM -0500, Bernhard Voelker <[email protected]> wrote:

> Update of bug #46791 (group findutils):
> 
>                   Status:                Obsolete => None
>              Assigned to:                     jay => berny
>              Open/Closed:                  Closed => Open
> 
>     _______________________________________________________
> 
> Follow-up Comment #5:
> 
> I see that adding such predicates is almost trivial, as the implementation
> has
> just to evaluate the already known value of 'struct stat' member 'rdev', and
> we
> already deal with major/minor numbers in -ls,-fls (although not in -printf).
> 
> I also don't see that this would add much risks or bloat, so it may fit quite
> well into find(1).
> As such, I'm hereby re-opening this one for discussion.
> 
> As for the user interface, I'd rather avoid messy parsing of the "x:y"
> syntax,
> and instead use the gear we already have for other numerical comparisons
> (-inum, -gid, -uid, -size, -links) which additionally allows the comparison
> with +N (COMP_GT), -N (COMP_LT) and exactly N (COMP_EQ).
> 
> 
> # Search the device with number '1:3'.
> $ find /dev -major 1 -minor 3 -exec ls -logd '{}' +
> crw-rw-rw- 1 1, 3 Jan  5 23:14 /dev/null
> 
> # Search all devices with major number <2.
> $ find /dev -major -2 -exec ls -logd '{}' +
> crw-rw-rw- 1 1,  7 Jan  5 23:14 /dev/full
> crw-r--r-- 1 1, 11 Jan  5 23:14 /dev/kmsg
> crw-r----- 1 1,  1 Jan  5 23:14 /dev/mem
> crw-rw-rw- 1 1,  3 Jan  5 23:14 /dev/null
> crw-r----- 1 1,  4 Jan  5 23:14 /dev/port
> crw-rw-rw- 1 1,  8 Jan  5 23:14 /dev/random
> crw-rw-rw- 1 1,  9 Jan  5 23:14 /dev/urandom
> crw-rw-rw- 1 1,  5 Jan  5 23:14 /dev/zero
> 
> # Search for all devices with minor number >300.
> $ find /dev -type c -minor +300 -exec ls -logd '{}' +
> crw-rw-r-- 1 189, 384 Jan  5 23:14 /dev/bus/usb/004/001
> crw-rw-r-- 1 189, 385 Jan  5 23:14 /dev/bus/usb/004/002
> crw-rw-r-- 1 189, 386 Jan  5 23:14 /dev/bus/usb/004/003
> 
> 
> I prototyped that as new predicate names '-major N -minor N',
> but I'm not strictly opposed to use more descriptive yet longer names
> like '-devmajor N -devminor N' or even '-rdev_major N -rdev_minor N'
> to emphasize that this test is limited to char+block devices.
> 
> I'm not sure one would rather like to see a combined '-rdev' test, as
> e.g. one wouldn't really search with '-rdev 259' for '/dev/null', would one?
> 
> Missing at this point: doc (man+texi), tests.
> 
> FWIW: the suggested '-major N -minor N' even works for '0:0' devices
> found in '/run/systemd/inaccessible/' on my system.
> 
> Opinions, objections, ...?
> 
> (file #56745)
> 

Just a thought: Might it better to use , rather than : between
major,minor device numbers, so as to be similar to ls output?
It's easier to type (no shift key), and maybe prettier.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.