Erreur: grep: trouver: Est un répertoire
Je suis nouveau sur Linux et en passant par des tutoriels et des échantillons. J'ai créé un fichier appelé test
et mettre alex
et alexander
en elle. J'essaie de trouver des instances de juste alex
.
Si je ne grep alex *
j'obtiens l'erreur:
grep: find: Is a directory.
Si je ne cat test | grep alex
puis-je obtenir (comme prévu)
alex
alexander (with alex in red)
Pourquoi la première cause d'une erreur, et le second produire les résultats attendus?
- Votre premier exemple,
grep alex *
, ne produira pas l'erreurgrep: find: Is a directory
. Veuillez fournir la commande que vous utilisez, et le message d'erreur réelle. - Si je pouvais ajouter une capture d'écran, je le ferais. grep alex * me donne l'erreur: "grep: trouver: Est un répertoire."
- Vous n'avez pas besoin d'une capture d'écran. En fait, il n'est pas préféré ou souhaité. Voir aussi Comment faire pour copier et coller à partir d'un terminal avec clavier?
- pourquoi était-il l'incrédulité au sujet de la sortie? Je viens de tomber sur exactement la même chose. L'utilisation de
*
m'a conduit àis a directory
en sortie.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez grep expression de fichier spécifique d'utilisation:
Dans le cas où vous utilisez
grep alex *
il recherche tous les fichiers dans le répertoire de travail en cours. En cas de sous-répertoire sera rencontré, il vous dira quelque chose commegrep: find: Is a directory
Si vous souhaitez effectuer une recherche récursive utilisation
-r
clé. Par exempleDans ce cas tous les fichiers et tous les fichiers à l'intérieur des sous-répertoires de
/some/folder/
sera vérifié.Et vous pouvez toujours utiliser
man grep
.ls -al
depuis le répertoire où le fichiertest
est situéfind
dans le répertoire à partir duquel vous exécutez la commande.Réponse correcte serait:
grep -d ignorer alex /etc/*
Définissant la variable d'environnement
GREP_OPTIONS
pour inclure la valeur"--directories=skip"
devrait supprimer que “c'Est un répertoire de message” (c'est à dire entrerGREP_OPTIONS="--directories=skip"
ou ajoutez cette ligne à l'un de vos fichiers d'initialisation de connexion comme .bashrc à faire que le comportement permanent).Aussi puisqu'il y a une commande nommée “test” et un autre nommé “trouver”, il n'est généralement pas recommandé de les utiliser comme fichier ou répertoire de noms. Qui ne devrait pas être un problème ici, mais elle peut conduire à d'autres conflits.
Ou à l'aide de
grep
avec-l
drapeau ou-w
drapeauRetour à la liste des fichiers contenant le mot "alex" dans le
/etc
répertoireRetour à la liste des lignes à partir des fichiers du
/etc
répertoire contenant "alex" mot