递归查找,但具有特定的子文件夹名称

时间:2019-01-02 02:04:29

标签: linux bash

此命令以递归方式在当前文件夹中找到所有文件名“ log_7”。

find . -name log_7

假设当前文件夹树下的许多子文件夹都有一个同名“ log_7”的文件:

./am/f1/log_7
./ke/f2/log_7
./sa/f6/log_7
..
./xx/f97/log_7 

有没有一种方法可以明确地说我们只想在文件夹名称“ f2”中搜索“ log_7”?这样find的结果将仅列出一个条目:

./ke/f2/log_7

3 个答案:

答案 0 :(得分:4)

您可以使用正则表达式。

find . -regex '.*/f2/log_7'

这仅在log_7直接嵌套在f2下的情况下匹配

答案 1 :(得分:0)

有另一种方法是对同一件事使用xargs

find . -name filename | xargs grep -e refectory

但是最好使用内置的正则表达式查找。

答案 2 :(得分:0)

简单的glob应该可以:

printf '%s\n' */f2/log_7

如果可能会有更多的前导文件夹,则可以使用globstar选项:

shopt -s globstar
printf '%s\n' **/f2/log_7