我需要在某个嵌套目录中查找所有文件,并使用这些文件对同一目录中的project.updated
文件进行内容替换。project.json
我正在使用 BusyBox (1.33.1)。
/apps
/project1
project.json
project.updated
/project2
project.json
如您所见,project.updated
project1 文件夹中有一个文件。此文件的内容应替换project.json
文件。
这只有在我知道确切文件的情况下才有效:
cat /apps/project1/project.updated > /apps/project1/project.json
我如何以动态方式执行此操作,因为有很多项目并且其中只有少数有project.updated
文件?
使用
find
and-execdir
which 在找到文件的目录中执行给定的命令:对于试运行,只需
echo
先执行命令,然后打印找到的文件:请不要忘记在这里转义重定向
\>
!(
sh
也适用于 POSIX 兼容,如果您需要它可移植)如果
-execdir
不可用,-exec
则可以,但也需要定义dirname
目标文件的:或者更简单,但不适用于
sh
:where在字符串的 END 处匹配
${0/%updated/json}
并将其替换为. 由于包含作为结果的整个路径,因此没有必要。updated
$0
json
$0
find
-execdir