此命令以递归方式在当前文件夹中找到所有文件名“ 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
答案 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