Con respecto a la documentación de ls(1) (man ls
):
-A, --casi-todos no enumeran implícitos. y ..
necesitas (sin cualquier argumento adicional como .*
):
ls -A
o mejor aún:
/bin/ls -A
Tengo una situación en la que quiero eliminar una serie de directorios de puntos. En mis servidores, marcamos los directorios para su eliminación agregando un punto y otros patrones de texto (marca de tiempo) para la eliminación automática. A veces necesito hacerlo manualmente.
Como comenté en la respuesta de Basile Starynkevitch, cuando usas un patrón global como el que está debajo, el interruptor -A pierde su función y funciona igual que -a:
[email protected]:~/scripts$ ls -1dA .*
.
..
.comparepp.sh.swp
Seguramente daría un error si trato de eliminar archivos como usuario, pero no quiero pensar qué podría pasar como root (!)
Mi enfoque en este caso es:
for dir in $(ls -1ad .* | tail -n +3) ; do rm -rfv $dir ; done
Saco las 2 primeras líneas que contienen los puntos como puedes ver. Para adaptar la respuesta a la pregunta hecha, esto haría el trabajo:
ls -d1A .* | tail -n +3
$ ls -lA
funciona mejor para mis necesidades.
Para mayor comodidad, recomiendo definir un alias dentro de .bashrc-file de la siguiente manera:
alias ll='ls -lA'