J'essaie de rechercher des lignes commençant par "1" en utilisant
ls -1 | grep ^1*
mais il retourne des lignes qui ne commencent pas par 1. Qu'est-ce qui me manque ici?
J'essaie de rechercher des lignes commençant par "1" en utilisant
ls -1 | grep ^1*
mais il retourne des lignes qui ne commencent pas par 1. Qu'est-ce qui me manque ici?
Réponses:
Bien que cela ne réponde pas à votre question, il s'agit d'une meilleure solution à ce qui semble être votre objectif:
ls -ld 1*
Vous pouvez utiliser un shell glob pour lister tous les fichiers qui commencent par 1
. Notez que la *
signification de l'éclat du shell est différente de celle des expressions régulières.
*
est un caractère générique qui signifie « 0 ou plus de tout caractère ». La signification de l'expression rationnelle est expliquée dans la réponse d'otokan.
^ 1. * correspond à la ligne entière ou, comme indiqué ci-dessus, ^ 1 a obtenu la chaîne contenue dans la ligne.
différents styles de regex utilisent différents symboles représentant des caractères, certaines options spécifient le style souhaité. et différentes options spécifient si vous souhaitez faire correspondre toute la ligne, ou seulement une partie de celle-ci, ou toute l'entrée en une seule chaîne.
ls
sortie, vous rencontrerez des problèmes si les noms de fichiers contiennent des caractères étranges, tels que des nouvelles lignes ... De nombreuses autres commandes (ls
du moins pas, du moins pas la version que je dois vérifier) avoir une option pour donner une sortie séparée null, que vous pouvez ensuite traiter en toute sécurité avecgrep -z