12
votes

Commande Shell pour trouver des fichiers dans un modèle d'annuaire

Avec une commande shell, je dois répertorier tous les fichiers de mon serveur dans le modèle de répertoire suivant:

/ home / * / public_html / images / *. php

Il y a quelques-uns un peu de choses qui prennent beaucoup de temps pour le faire manuellement. Je n'ai vraiment aucune idée quand il s'agit de ces commandes.


1 commentaires

Oui. C'est la syntaxe correcte. Ne fonctionne-t-il pas? Ou voulez-vous le rendre plus rapide? Si tel est le cas, il n'y a pas d'optimisation inhérente possible. Juste des alternatives et des travaux de contournement. Localiser | Grep ÊTRE UN POUR LA RECHERCHE À LA RECHERCHE DES LISTINITIONS DE DÉSIONNAIRES CACHÉES.


4 Réponses :


-1
votes

Utilisez php glob fonction xxx

Il retournera un tableau de les chaînes de chemin correspondantes. Vous pouvez également utiliser simplement: xxx

ou: xxx

de la coque.


4 commentaires

Je crois qu'il fait cela dans la coquille, pas PHP.


@marparcog, c'est étiqueté php. Mais ça n'a pas vraiment d'importance.


L'étiquette PHP pourrait simplement provenir du fait qu'il listant les fichiers .php.


Techniquement, vous pouvez utiliser PHP en tant que script shell, bien que cela se sent gênant. ;)



5
votes

laissez bash élargir les fichiers pour vous et utilisez ls pour les énumérer: xxx

exemple de sortie: xxx


0 commentaires

14
votes

script shell: xxx

Vous pouvez ensuite modifier la commande -exec pour faire quelles que soient les actions souhaitées aux fichiers retournés. Dans ce cas, nous les faisons écho, mais vous pourriez facilement effectuer d'autres actions également.


2 commentaires

Cela correspondra au /home/foo/public_html/images/file.php mais pas /home/foo/bar/public.html/images/file.php . De toute façon, je pouvais correspondre aux annuaires à une profondeur?


Comme mentionné dans l'autre réponse ci-dessous, en utilisant -Path correspond à des répertoires à n'importe quelle profondeur. (E.G., -Path "* / images / *" correspondrait à tous les fichiers de n'importe quel chemin qui possède un répertoire images.)



24
votes
find /path/to/directory/.  -path "*/match/this/path/*" -type f -name "*.php"

1 commentaires

Merci, c'est ce dont j'avais besoin. Il trouve des fichiers dans / chemin / path / to / to / correspondant / foo / correspond / ceci / chemin et / chemin / sur / répertoire / foo / bar / match / ceci / chemin / baz /