En tant qu'extension à la réponse de Shaido, j'aimerais expliquer pourquoi le -a
l'option ne fonctionnera pas ici :
Le ls
la commande ne le fait pas traiter les caractères génériques. L'interpréteur de ligne de commande effectue cette étape :
Si vous tapez la ligne de commande "mycommand *.c
" l'interpréteur de ligne de commande remplacera d'abord la chaîne générique "*.c
" par la liste des fichiers correspondants, puis exécutez la ligne de commande résultante :
mycommand a.c file.c test.c
L'interpréteur de ligne de commande fonctionne de la même manière pour toutes les commandes, il ne peut donc pas savoir que -a
signifie "y compris les fichiers cachés" dans le cas où le ls
commande (tandis que -a
a une signification totalement différente pour les autres commandes)...
Les fichiers commençant par un point sont masqués par défaut dans les listes de fichiers. Le moyen le plus simple de faire correspondre ce type de fichiers serait de mettre un point au début de l'expression. Cependant, cela ne correspondra qu'aux fichiers commençant par .
.
ls -al .*.swo
L'alternative est de définir le dotglob
avant d'exécuter la commande, puis les fichiers commençant par .
seront inclus.
shopt -s dotglob
Ajoutez-le à votre ~/.bashrc
pour le définir par défaut.
Notez que le réglage dotglob
peut conduire à des résultats inattendus lors de l'utilisation du shell bash, puisque les deux .
(répertoire courant) et ..
(répertoire parent) apparaîtra lors de l'utilisation de *
. Avec dotglob
défini, jamais essayez d'utiliser rm -R *
.