Elencare tutti i file che non hanno estensioni


11

Voglio elencare tutti i file in una directory che non ha estensioni.

Per esempio:

$ ls
a.txt    b      c.pdf     d     e.png
$ ls -someOption
b       d

Quale comando posso usare invece di ls -someOption?


Solitamente se si desidera conoscere le opzioni per un comando, leggere la sua pagina man digitando "man <comando>" nel terminale. man sta per manual (help) .for example- man ls
aaditya1234

@AadityaBagga In questo caso, la risposta non è stata trovata nel manuale.
Wisbucky,

In questo scenario, consideri .gitignoreun'estensione?
Amit Naidu,

Risposte:


14
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot

Scoprirai che ciò ti mostrerà il contenuto di ogni directory nella directory di lavoro. Se non vuoi questo, usa:

ls -d !(*.*)

Puoi inserire il shopt -s extglobtuo ~/.bashrcper attivarlo ogni volta che apri un terminale. C'è già una linea ~/.bashrcnell'Ubuntu predefinito (linea 29 per me il 13.04) che puoi rimuovere il commento per abilitare questo (e globstar).

Vedi la wiki di Greg per maggiori informazioni sulle varie opzioni di globbing della shell. Nota che questa è una proprietà della shell bash piuttosto che del lscomando, quindi puoi usarla con altri comandi.

In alternativa, puoi usare

ls --ignore='*.*'

o

ls -I '*.*'

... che è lsun'opzione interna , ma extglob può essere applicato a qualsiasi comando arbitrario e quindi è più utile secondo me.


1
OP non ha menzionato quale shell, anche se immagino che si ipotizzi bash. Se fosse ksh, non è richiesto extglob. Per impostazione predefinita, basta:ls !(*.*)
runrig

1
@runrig Hai ragione, ma data la natura di base della domanda ho pensato che l'OP stesse usando la shell bash predefinita.
evilsoup,

10

Entrambi ls | grep -v \\.e ls | grep -v "\."funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.