Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Bash脚本在给定文件夹中查找文件类型_Macos_Bash_Unix - Fatal编程技术网

Macos Bash脚本在给定文件夹中查找文件类型

Macos Bash脚本在给定文件夹中查找文件类型,macos,bash,unix,Macos,Bash,Unix,我有点问题。我试图编写一个脚本,在给定目录中查找给定类型php的所有文件。如果找不到,它将遍历父目录中的所有子目录。如果找到它,它将执行给定的操作并中断 以下是我到目前为止的情况: function findPHP(){ declare -a FILES FILES=$(find ./ -type f -name \*.php) for f in $FILES do echo "Processing $f file..." # take action on eac

我有点问题。我试图编写一个脚本,在给定目录中查找给定类型php的所有文件。如果找不到,它将遍历父目录中的所有子目录。如果找到它,它将执行给定的操作并中断

以下是我到目前为止的情况:

function findPHP(){
  declare -a FILES
  FILES=$(find ./ -type f -name \*.php)
  for f in $FILES
  do
    echo "Processing $f file..."
    # take action on each file.
  done
}

有什么想法吗?

使用$。。。与类似的反引号语法不同,shell不将括号内的任何字符视为特殊字符,这表明*不需要转义。find命令可能会看到\*。尝试删除反斜杠。

您遇到了什么问题?文件数组似乎总是空的。我不确定是因为我没有正确创建数组,还是因为它没有通过子目录。我觉得你的脚本看起来不错。。。也许放弃-typef选项来查找,但我希望它能工作。@trojanfoe谢谢,尝试过,但仍然没有乐趣。将echos放在关键点上,我看到函数被调用,但在do语句之后什么也没有调用。如果我添加echo${FILES[@]},这将返回一个。我只是编写了一个脚本,其中没有使用反斜杠,它工作得很好。\*是不需要的,*在$内就足够了……我不完全理解反报价和$之间的区别。。。我自己,但它涉及反斜杠“$”、“`”和“\”的处理方式,而不是反斜杠“*”。要查看如何处理差异,请尝试设置a=5,然后使用echo$echo$a、echo$echo\$a、echo`echo$a`和echo`echo\$a`。