php - 使用 Bash 并调用 php 命令遍历目录和子目录中的所有文件
问题描述
我对 bash 脚本非常陌生,但我正在寻找构建一个基本上通过目录及其子目录和文件的脚本。
顶层目录将是图像的位置,因此顶层可能是“293 House Street”,其中将是每个房间“浴室”、“厨房”等的子目录,并且在这些子目录中将是图像。也可能在顶层找到图像。
一旦找到文件,我想基本上调用 PHP 命令并为要使用的数据提供一些参数。
php process_directories.php -a "293 House Street" -p "PATH_OF_FILE" -f "FILE"
-a
将是地址 // 对于在当前目录中找到的每个文件,这将始终相同。
-p
将是文件的路径
-f
将是文件。
有没有一种好方法可以制作这样的脚本?
解决方案
我认为您不能直接使用命令执行此操作,find
但您可以使用 Bash 遍历其结果:
#!/usr/bin/env bash
while IFS= read -d '' -r filepath
do
dirpath="${filepath%/*}"
filename="${filepath##*/}"
php process_directories.php -a "293 House Street" -p "$dirpath" -f "$filename"
done < <(find . -type f -print0)
${filepath%/*}
是$filepath
但/
删除了最后一个到最后(即目录路径)。${filepath##*/}
是$filepath
但从启动到最后一次/
删除(即文件名)。find . -type f
将输出当前目录及其子目录下的所有文件,以 为前缀./
,保证上面两个项目符号正常工作。- 通过使用字节作为分隔符,组合选项确保
-print0
您find
可以正确处理每个路径(在 Linux 文件系统中,它可以由任何字符组成,但.read -d ''
NULL
NULL
备注:你也可以修改你的 PHP 脚本来做同样的事情,而不是使用 Shell
推荐阅读
- microsoft-graph-api - 进行获取事件调用时如何获取事件的日历 ID?
- php - 教义:在不更改自动增量的情况下明确给出主键值
- c# - 如何在使用 Select(LINQ) 之前检查列表是否为空?
- html - 为什么段落中的内容显示为链接?
- javascript - 如何在谷歌地图上移动标记反应js
- java - 如何使用用户输入数字并程序返回相应结果的数组制作程序
- c# - 在 VS Code(1.32.3)中创建新接口或类时“找不到 project.json 或 *.csproj”
- ios - 无法导入已安装的 pod 模块?
- excel - 如何在一行数字中找到最后一个零值实例
- node.js - 为什么 google.com 请求返回正确的 html,但 amazon.com 返回不可读的响应?以及如何转换响应?