Encontre um arquivo com um nome dado ou digite diretórios com um nome dado

2

Eu quero encontrar todos os scripts PHP que estão dentro de um diretório chamado web . Em particular, estou interessado em qualquer arquivo chamado index.php em qualquer um desses diretórios.

Eu sei que posso usar sudo find / -type d -name "web" para listar todos os diretórios, e então eu posso usar sudo find <directory path> -type f -name "*.php" para cada um dos caminhos de saída, para ver se ele contém um script PHP.

Mas existe uma maneira de fazer isso em uma linha e dois comandos find aninhados: um comando find usado para obter os caminhos para os diretórios web , e o segundo para usar cada um desses diretórios como a raiz para encontrar um arquivo cujo nome corresponda ao padrão *.php ?

    
por James Newton 03.11.2017 / 12:02

2 respostas

2

Você não precisa chamar find duas vezes se usar a opção -path em vez de -name :

find / -type f -path "*/web/*.php"

Especificamente para cada arquivo index.php localizado em um diretório denominado web :

find / -type f -path "*/web/*index.php"
    
por dessert 03.11.2017 / 12:22
0

Este comando deve conseguir isso:

find / -type d -name "web" -exec find {}/  -type f -name "*.php" \;

Testado nesta árvore:

Documents/askubuntu/web
├── index.php
├── kate
│   ├── jate
│   │   └── jate.php
│   └── kate.php
├── koko
│   └── read.php
└── web2
    └── index.php

Resultado:

./Documents/askubuntu/web/koko/read.php
./Documents/askubuntu/web/kate/kate.php
./Documents/askubuntu/web/kate/jate/jate.php
./Documents/askubuntu/web/index.php
./Documents/askubuntu/web/web2/index.php
    
por George Udosen 03.11.2017 / 12:12