bash循环遍历所有在子目录中递归查找

时间:2012-02-19 20:54:04

标签: bash shell for-loop

我有一个类似于以下内容的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 个答案:

答案 0 :(得分:28)

FILES=$(find public_html -type f -name '*.php')

重要提示:请注意*.php周围的单引号,以防止*的shell扩展。

答案 1 :(得分:1)

FILES=`find public_html -type d`

$ FILES现在将是public_html中每个目录的列表。