Bash цикл через все найти рекурсивно в подкаталогах - PullRequest
10 голосов
/ 20 февраля 2012

У меня есть скрипт bash, который выглядит следующим образом:

#!/bin/bash
FILES=public_html/*.php  # */ stupid syntax highlighter!
for f in $FILES
do
  echo "Processing $f file..."
  # take action on each file.
done

Теперь мне нужно, чтобы он прошел через все подкаталоги в public_html, поэтому он должен работать на:

/public_html/index.php
/public_html/forums/status.php
/public_html/really/deep/file/in/many/sub/dirs/here.php

На что я могу изменить FILES=public_html/*.php, чтобы сделать это?

Также мне нужно проверить, чтобы убедиться, что есть хотя бы один файл, иначе он печатает

Processing *.php file...

Ответы [ 2 ]

29 голосов
/ 20 февраля 2012
FILES=$(find public_html -type f -name '*.php')

ВАЖНО: Обратите внимание на одинарные кавычки вокруг *.php, чтобы предотвратить расширение оболочки *.

1 голос
/ 20 февраля 2012
FILES=`find public_html -type d`

$ FILES теперь будет списком всех каталогов внутри public_html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...