Réponses:
L'équivalent direct est
find . -iname <filename>
qui listera tous les fichiers et répertoires appelés <filename>
dans le répertoire courant et tous les sous-répertoires, en ignorant la casse.
Si votre version de find ne prend pas en charge -iname
, vous pouvez utiliser à la -name
place. Notez que contrairement à -iname
, -name
est sensible à la casse.
Si vous souhaitez uniquement répertorier les fichiers appelés <filename>
et non les répertoires, ajoutez-type f
find . -iname <filename> -type f
Si vous souhaitez utiliser des caractères génériques, vous devez mettre des guillemets autour, par exemple
find . -iname "*.txt" -type f
sinon le shell va le développer.
Comme d'autres l'ont souligné, vous pouvez également:
find . | grep "\.txt$"
grep
imprime des lignes basées sur des expressions régulières, qui sont plus puissantes que les caractères génériques, mais ont une syntaxe différente.
Voir man find
et man grep
pour plus de détails.
<filename>
comme marqueur pour l'entrée d'utilisateur est une mauvaise habitude dans un environnement de ligne de commande, où la < and >
plupart du temps a une signification spécifique. Je suggère simplement d'utiliser filename
, peut-être FILENAME pour le souligner. La plupart des gens comprendront, et ceux qui ne le feront pas, pourraient nuire lorsqu'ils ne comprennent pas qu'ils ne sont pas censés frapper un signe inférieur ou supérieur à.
<filename>
est une convention dans beaucoup de documentation UNIX, donc je pense qu'il est utile que les gens en soient conscients, mais je suis d'accord FILENAME
pour être plus facile à comprendre.
find -iname <filename>
est meilleur car il est insensible à la casse comme DOS
Certains obus le permettent ls **/filename
, ce qui est assez pratique.
shopt -s globstar; echo **/filename
équivaut à find . -name "filename"
. Il fonctionne également en zsh.
shopt -s globstar
, cela fonctionnera probablement pour vous. La globalisation récursive est une fonctionnalité qui n'est disponible que dans certains shells, et parfois, elle n'est pas activée par défaut.
shopt
commande active l'option globstar on
. Maintenant, cela fonctionne comme un charme. Merci beaucoup.
Vous pouvez le faire avec
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
(je ne sais pas si la egrep
partie est importante, mais vous l'avez utilisée egrep
dans votre réponse, donc je l'ai incluse)
grep
utilise des expressions régulières, tandis que la commande DOS utilise des caractères génériques shell.
find . -name "*.*"
ne fera pas ce que vous attendez d'un arrière-plan DOS. Les globes sont assez proches pour être reconnaissables, cependant, tandis que les regex sont une bête entièrement nouvelle.
*.*.*
-on dans un dos moderne c.-à-d. Windows cmd? Et alors *.*.*.*
?
Cela peut être aussi: tree -if </your/path>
ou 'pwd'
comme chemin
<filename>
contient des caractères génériques, utilisez des guillemets autour, par exemplefind . -name '*.txt'
.