Найти файл с заданным именем или тип в каталогах с заданным именем

я хочу найти все PHP-скрипты, которые находятся внутри каталога с именем web. В частности, меня интересует все файлы с именем index.php в любом из этих каталогов.

я знаю, что я могу использовать [F3] для список всех каталогов, а потом я могу использовать [F4] и для каждого из путей выхода, чтобы увидеть, если он содержит PHP-скрипт.

но есть ли способ сделать это в одну строку и два вложенных найдете команды: одна команда Find используется для получения пути к web каталоги, а второй использовать каждый из этих каталогов, в свою очередь, как корень найти файл, имя которого соответствует образец *.php?

2
задан 3 November 2017 в 15:02

6 ответов

Вам не нужно дважды вызывать find, если вы используете -path вместо -name:

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

В частности, для каждого файла index.php, расположенного под каталогом с именем web:

find / -type f -path "*/web/*index.php"
2
ответ дан 22 May 2018 в 16:50
  • 1
    +1, элегантный и короткий :-), но он не отвечает на вопрос: «Но есть ли способ сделать это в одной строке и две вложенные команды наведения» ;-) – sudodus 3 November 2017 в 15:28
  • 2
    @sudodus О, мой, я, должно быть, неправильно понял вопрос. ;) – dessert 3 November 2017 в 16:02
  • 3
    Еще один ответ на один ответ без гнездования. Спасибо Джорджу и @судоду за показ мне, как использовать -exec. – James Newton 3 November 2017 в 16:30
  • 4
    Добро пожаловать @JamesNewton :-) – sudodus 3 November 2017 в 16:53

Вам не нужно дважды вызывать find, если вы используете -path вместо -name:

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

В частности, для каждого файла index.php, расположенного под каталогом с именем web:

find / -type f -path "*/web/*index.php"
2
ответ дан 18 July 2018 в 03:59

Вам не нужно дважды вызывать find, если вы используете -path вместо -name:

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

В частности, для каждого файла index.php, расположенного под каталогом с именем web:

find / -type f -path "*/web/*index.php"
2
ответ дан 24 July 2018 в 17:58

Эта команда должна достичь этого:

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

Протестировано на этом дереве:

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

Результат:

./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
0
ответ дан 22 May 2018 в 16:50

Эта команда должна достичь этого:

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

Протестировано на этом дереве:

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

Результат:

./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
0
ответ дан 18 July 2018 в 03:59

Эта команда должна достичь этого:

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

Протестировано на этом дереве:

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

Результат:

./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
0
ответ дан 24 July 2018 в 17:58

Другие вопросы по тегам:

Похожие вопросы: