Rimuovere i file che iniziano con il trattino

Postato da ROb | nella categoria Linux | martedì, 9 marzo 2010

3

File con trattino

Mi è capitato spesso di creare inavvertitamente dei file che iniziano con il trattino.
Quando ho provato a cancellarli o semplicemente a farne il listing i comandi bash tradizionali mi davano errore.

Facciamo infatti questa prova. Creiamo nella directory /tmp due file con il trattino in questo modo (digitate anche il carattere “>“):

cd /tmp/
> '-foo.txt'
> '--bar.txt'

A questo punto se provate a farne il listing in questo modo modo resterete sorpresi:

ls -l *.txt
ls: unrecognized option '--bar.txt'
Try `ls --help' for more information.

Esiste però un’opzione importante di molti comandi bash che ci viene in aiuto e delimita la lista delle opzioni dei comandi stessi. Quest’opzione è ““.
Se infatti proviamo il seguente comando i file “speciali” verranno listati correttamente:

ls -l -- *.txt

In pratica senza specificare quest’opzione i comandi espandono la lista dei file e interpretano quelli che iniziano con il trattino come se fossero delle opzioni del comando stesso. Sfruttando invece l’opzione speciale “–” il comando conosce esattamente dove termina la lista delle opzioni specificate dall’utente.

Tale logica è applicabile anche per molti altri comandi quali: rm, mv e cp. In generale la regola è:

comando opzioni -- '--filename'

L’articolo originale che tratta questo problema lo trovate su NixCraft.

Commenti inviati (3)

Molto più facile:

ls -l ./–*

Wow, fantastico :D
Ebbi anche io problemi del genere… ora saprò come comportarmi.

Ciao :)

Sì anche questa soluzione non è male, sicuramente più intuitiva.

Grazie SIGLAZY.

Scrivi un commento