Subject: bug#69261: closed (Re: bug#69261: 'ls' : --ignore does not apply on FILEs selection)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 19 Feb 2024 06:46:02 +0000

Your bug report

#69261: 'ls' : --ignore does not apply on FILEs selection

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
69261: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69261
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#69261: 'ls' : --ignore does not apply on FILEs selection
From: Paul Eggert <[email-masked]>
To: Mathias MICHEL <[email-masked]>
Cc: [email-masked]
Date: Sun, 18 Feb 2024 22:45:00 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On 2024-02-18 14:07, Mathias MICHEL via GNU coreutils Bug Reports wrote:

> Is it expected that --ignore arg does not apply on globbed FILE ?

Yes. --ignore is about what 'ls' finds in directories, not about 
command-line arguments.

> My goal is to avoid using grep or complex find args:
>> > ~/.ssh :: ls id_ed* | grep -v "\.pub$" > id_ed25519 id_ed25519.local id_ed25519_ori

Try this:

   ls --hide='[^i]*' --hide='i[^d]*' --hide='id[^_]*' --hide='id_[^e]*' 
--hide='id_e[^d]*' --hide='*.pub'

Admittedly ugly, but does the job.

Subject: 'ls' : --ignore does not apply on FILEs selection
From: Mathias MICHEL <[email-masked]>
To: [email-masked]
Date: Sun, 18 Feb 2024 22:07:39 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,
Is it expected that --ignore arg does not apply on globbed FILE ?
My goal is to avoid using grep or complex find args:
> ~/.ssh :: ls id_ed* | grep -v
"\.pub$"id_ed25519id_ed25519.localid_ed25519_ori
> ~/.ssh:: find . '!' -name '*.pub' -name
"id_ed*"./id_ed25519_ori./id_ed25519.local./id_ed25519
I tried -I (--ignore) and --hide :
> ~/.ssh:: ls -I"*.pub" id_ed*     id_ed25519  id_ed25519.local
 id_ed25519.local.pub  id_ed25519_ori
 id_ed25519_ori.pub    id_ed25519.pub> ~/.ssh:: ls --hide "*.pub"
id_ed*    id_ed25519  id_ed25519.local  id_ed25519.local.pub
 id_ed25519_ori  id_ed25519_ori.pub    id_ed25519.pub
Since help text says for both options is : do not list implied entries
matching shell PATTERN
I would expect it to occur after building the initial listing.
When I remove the globbing pattern, it seems to work as expected:
~/.ssh:: ls -I "*.pub" ./config    id_ed25519  id_ed25519.local
 id_ed25519_ori  id_rsa.local  known_hosts  known_hosts.old~/.ssh:: ls
-I "*.pub"config    id_ed25519  id_ed25519.local  id_ed25519_ori
 id_rsa.local  known_hosts  known_hosts.old
Man page says nothing about conflicts with file globbing. My view is
obviously that this is a miss, what are yours ?
Thanks for your feedback--
Mathias M