Per quanto riguarda la documentazione di ls(1) (man ls
):
-A, --almost-all non elenca implicitamente . e ..
ti serve (senza qualsiasi argomento aggiuntivo come .*
):
ls -A
o meglio ancora:
/bin/ls -A
Ho una situazione in cui voglio rimuovere una serie di directory punto. Nei miei server contrassegniamo le directory per la rimozione aggiungendo un punto e alcuni altri modelli di testo (timestamp) per la rimozione automatica. A volte devo farlo manualmente.
Come ho commentato alla risposta di Basile Starynkevitch, quando usi uno schema globbing come quello sotto l'opzione -A perde la sua funzione e funziona proprio come -a:
[email protected]:~/scripts$ ls -1dA .*
.
..
.comparepp.sh.swp
Darebbe sicuramente un errore se provo a rimuovere i file come utente, ma non voglio pensare a cosa potrebbe accadere come root (!)
Il mio approccio in questo caso è:
for dir in $(ls -1ad .* | tail -n +3) ; do rm -rfv $dir ; done
Codino le prime 2 righe contenenti i punti come puoi vedere. Per adattare la risposta alla domanda posta questo farebbe il lavoro:
ls -d1A .* | tail -n +3
$ ls -lA
funziona meglio per le mie esigenze.
Per comodità consiglio di definire un alias all'interno del file .bashrc come segue:
alias ll='ls -lA'