所以我需要在/ home /中找到文件名为“options.php”的所有文件。
find . -name "options.php"
当'在家'时,会找到所有options.php文件,但是,我想只在/ public_html /中找到所有options.php文件。 换句话说,它应该忽略找到的所有其他'options.php'文件。 例如,积极/显示结果:
/home/usr1/public_html/options.php
/home/usr2/public_html/options.php
例如,不应该告诉我:
/home/usr1/public_html/wp-admin/options.php
/home/usr2/public_html/wp-content/plugins/whatever/options.php
答案 0 :(得分:1)
使用grep
从找到的结果中过滤所需的结果。
find . -name "options.php" | grep 'public_html/options.php'
答案 1 :(得分:1)
您可以通过-path
选项传递模式,如下所示:
find /home/ -path '*/public_html/options.php'
对于更灵活的模式,使用-regex
接受在整个路径上应用的正则表达式。但在这种特殊情况下,-regex
没有优势-path
:
find /home/ -regex '.*/public_html/options.php'
答案 2 :(得分:0)
ls
实用程序更适合此任务:
ls -1 /home/*/public_html/options.php
如果要处理结果列表并且不想要在没有找到此类文件时出现错误消息或警告,则只需重定向命令的错误输出:
ls -1 /home/*/public_html/options.php 2>/dev/null
使用find
实用程序的替代方法是:
find /home -path "*/public_html/options.php"
或者,如果您想在层次结构中进一步向下阻止名为“public_html”的文件夹中的匹配项:
find /home -path "/home/*/public_html/options.php"
find /home -maxdepth 3 -path "*/public_html/options.php"
答案 3 :(得分:0)
您可以限制查找的深度:
find . -maxdepth N
,这样它应该只在你想要的文件夹中找到options.php。