On 02/20/2017 08:52 PM, L A Walsh wrote: > Would it be possible or not unduly difficult to change > 'find' to recognize/allow a null path ("") specifically > to allow find to start at the current directory (much like > not specifying any paths), BUT also suppress the prepending > of "./" at the beginning of every result?
At first glance, the request sounds interesting to me. However, after some thinking I have some qualms with it. First of all: why do you need to strip off the leading "./"? If you only need the basenames, then you can use $ find -printf '%f\n' Other than that, I think you want that $ find '' works identical to $ find -printf '%P\n' right? Regarding feasibility: find(1) does not treat an "" file argument special; instead it's actually the kernel which returns ENOENT for it: $ strace -ve newfstatat find '' newfstatat(AT_FDCWD, "", 0x1784cd8, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) find: ‘’: No such file or directory +++ exited with 1 +++ find(1) tries to read the status - and for directories its content -, from the file system. I do not know if there are operating systems or file system implementations which would allow an empty-string file name, but the requested change would break that. Of course, we could hack "find ''" to be treated as "find -printf '%P\n'", but it would become hard to argument how the '' file argument should be treated as in combination with a) other file arguments, and/or b) with other actions: $ find /dir '' other $ find '' -printf '%H, %p, etc.' etc. IMO this would bring quite some inconsistency and confusion. Finally, changing the behavior as requested would for sure break (okay, badly written) scripts like this: var="$( command which may fail )" if find "$var"; then do_something fi I've personally never seen the leading "./" as annoying enough. Have a nice day, Berny