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 -nameplace. Notez que contrairement à -iname, -nameest 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 findet man greppour 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 FILENAMEpour ê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.
shoptcommande 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 egreppartie est importante, mais vous l'avez utilisée egrepdans votre réponse, donc je l'ai incluse)
greputilise 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'.