我有一些网络空间,无法在其上编辑主php.ini
文件,也无法使用.htaccess
命令使其递归应用。
如果我们调用我的网络目录D
,我想在的每个子目录D
(以及这些子目录下的每个子目录等)中递归地创建一个php.ini
指向中的文件的软链接D
。
是否有一个命令行语句可用于此目的? 如果有,它是什么?
我正在使用基于 Linux 的主机。
答案1
Bash 4+ 解决方案(启用了 globstar,**
是一个递归 glob,**/
将递归扩展到每个目录):
shopt -s globstar
for f in ./**/; do ln -s php.ini "$f"php.ini; done
使用 find 的 POSIX 解决方案——这适用于任何 *nix:
find . -type d -exec ln -s php.ini '{}'/php.ini \;
其中任何一个都应该在目录 D 中运行。ln -s
是在 *nix 上创建符号(软)链接的命令,您可以使用查看有关它的更多信息man ln
。
为了随后删除链接,您可以再次使用 bash(假设版本 4+)或 find:
shopt -s globstar
for f in ./**/php.ini; do [[ -L "$f" ]] && rm "$f"; done
测试[[ -L "$f" ]]
$f 是否为软链接,&&
意思是“仅当前一个计算结果为真时才执行下一个操作”——因此这不会删除您原始的“php.ini”文件。
find . -type l -name 'php.ini' -delete
-type l
(是小写的 L,而不是一个)告诉 find 仅查找符号(软)链接,这意味着它不会找到并删除原始的“php.ini”文件。