17

如何在 linux 命令终端中找到具有特定父目录的所有文件?

我知道使用find这样的方式查找所有文件:

find . -name filename.extension

但是是否可以找到所有filename.extension具有父目录的文件foldername

我尝试了以下方法,但这不起作用:

find . -name foldername/filename.extension

而且我找不到任何如何做到这一点的例子。

所以我期望的一些示例结果如下:

./example/project/website/foldername/filename.extension
./folder/demo/foldername/filename.extension
./more/files/foldername/filename.extension
./business/assets/foldername/filename.extension
./steven/foldername/filename.extension

有没有办法做到这一点?

4

6 回答 6

31

-pathswitch 与find一起使用

find . -path \*/foldername/filename.extension
于 2013-01-07T06:09:04.410 回答
3

试试这个

locate "/*/foldername/filename.extension"

前提是您已更新索引updatedb

于 2013-01-07T06:09:20.990 回答
1

你可以运行:

find ./ | grep 'foldername/filename.extension$'

“find”命令将查找所有文件,“grep”将通过正则表达式过滤它们。

PS。您也可以使用“find”的“-exec”参数。

于 2013-01-07T06:21:36.300 回答
1

回答更通用的问题,我希望这会奏效

find . -path '*/foldername/*'

但是,它不是所有带有 parent 的文件,而是给出所有带有的文件。这将只显示孩子:

find . -path '*/foldername/*' | sed 's|.*foldername/\([^/]*\).*|\1|' | sort -u

或者

find . | egrep -o 'foldername/[^/]*' | sed 's|[^/]*/||' | sort -u

但这并没有给出路径,所以

find . -iname foldername -exec find {} -maxdepth 1 -mindepth 1 \;
于 2020-01-20T08:50:56.887 回答
0
  1. 查找所有名为examples.
  2. 然后省略谁有任何父目录名为node_modules.

find . -type d -name examples | grep -v node_modules

于 2018-05-25T14:32:13.960 回答
-3

只在父目录中显示结果

Find -maxdepth 1 -type f -name 'file.extension'

于 2013-01-07T06:23:37.410 回答