GNU/Linux >> Tutoriels Linux >  >> Linux

Le caractère générique `* ` ne peut pas correspondre à une chaîne ?

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 * .


Linux
  1. Commande Linux ls - Lister les fichiers

  2. Commande mcopy sous Linux

  3. Commande Unix pour lister les fichiers contenant une chaîne mais *PAS* contenant une autre chaîne

  4. Comment remplacer une chaîne dans plusieurs fichiers en ligne de commande Linux

  5. Comment puis-je copier plusieurs fichiers sur scp en une seule commande ?

Commande Cp sous Linux (Copier des fichiers)

Commande Rm sous Linux

Commande lsof sous Linux (10 exemples)

Quelques bonnes alternatives à du Command

Nombre de fichiers contenant une chaîne donnée ?

Commande ls sous Linux/UNIX