Lista todos los archivos que no tienen extensiones

11

Quiero enumerar todos los archivos en un directorio que no tiene extensiones.

Por ejemplo:

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

¿Qué comando puedo usar en lugar de ls -someOption?

NewMrd
fuente
Usualmente, si desea conocer las opciones de un comando, lea su página de manual escribiendo "man <command>" en el terminal. man significa manual (ayuda) .por ejemplo- man ls
aaditya1234
@AadityaBagga En este caso, la respuesta no se encuentra en el manual.
wisbucky
En este escenario, ¿considera .gitignoreuna extensión?
Amit Naidu

Respuestas:

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

Encontrará que al hacer esto le mostrará el contenido de cada directorio en el directorio de trabajo. Si no quieres esto, usa:

ls -d !(*.*)

Puede ponerlo shopt -s extgloben ~/.bashrctenerlo activado cada vez que abra un terminal. Ya hay una línea en el Ubuntu predeterminado ~/.bashrc(línea 29 para mí en 13.04) que puede descomentar para habilitar esto (y globstar).

Consulte la wiki de Greg para obtener más información sobre las diversas opciones de globbing del shell. Tenga en cuenta que esta es una propiedad del bash shell en lugar del lscomando, por lo que puede usarla con otros comandos.

Alternativamente, puedes usar

ls --ignore='*.*'

o

ls -I '*.*'

... que es una lsopción interna , pero extglob se puede aplicar a cualquier comando arbitrario, por lo que es más útil en mi opinión.

maldad
fuente
1
OP no mencionó qué shell, aunque supongo que se supone bash. Si fuera ksh, no se requiere extglob. Por defecto, solo:ls !(*.*)
runrig
1
@runrig Tienes bastante razón, pero dada la naturaleza básica de la pregunta, asumí que el OP está usando el shell bash predeterminado.
evilsoup
10

Ambos ls | grep -v \\.y ls | grep -v "\."obras.

krowe
fuente