Répertorie tous les fichiers / répertoires dans ou sous le répertoire actuel qui correspondent à "nom de fichier".
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>
contient des caractères génériques, utilisez des guillemets autour, par exemplefind . -name '*.txt'
.<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'utiliserfilename
, 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'accordFILENAME
pour être plus facile à comprendre.find -iname <filename>
est meilleur car il est insensible à la casse comme DOSCertains obus le permettent
ls **/filename
, ce qui est assez pratique.la source
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'optionglobstar on
. Maintenant, cela fonctionne comme un charme. Merci beaucoup.Vous pouvez le faire avec
la source
find . -regextype posix-egrep -regex '.*filename.*'
(je ne sais pas si laegrep
partie est importante, mais vous l'avez utiliséeegrep
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 cheminla source