在不知道名称的情况下打开目录

Opening directory without knowing its name

我正在编写一个脚本,用户在其中输入他想要在 .txt 文件中查找特定字符串的目录,但我不知道如何在不知道其名称的情况下打开给定目录中的每个目录.

例如这是用户指定的目录:

Project/
   AX/include/
             ax.txt
             bx.txt
   AX/src/
         ax.txt
         bx.txt
   BY/include/
             ay.txt
             by.txt
   BY/src/
         ay.txt
         by.txt

你可以为此制作一个 python 脚本,从 python 的 os 模块你可以使用 os.listdir 列出目录中的所有文件,你可以迭代目录内的目录。

代码

import os
path = 'c:\projects\hc2\'
folders = []
# r=root, d=directories, f = files
    for r, d, f in os.walk(path):
        for folder in d:
            folders.append(os.path.join(r, folder))
for f in folders:
print(f)

输出

c:\projects\hc2\ c:\projects\hc2\分析器\ c:\projects\hc2\分析器\输出\ c:\projects\hc2\analyzer\out\production\ c:\projects\hc2\analyzer\out\production\类\ c:\projects\hc2\analyzer\out\production\类\com\ //...

只需使用grep -r 递归地在文件中查找字符串。你不应该重新发明轮子。你的情况 运行 grep -r "string to find" Project/

就是说,要列出文件夹 path/to/folder/ 中的文件夹,您只需要让 shell 像这样 ls path/to/folder/*/ 那样用 globbing 扩展它。所以你只需要 运行 yourcommand path/to/folder/*/

或者使用 find:

find path/to/folder/ -type d -maxdepth 1 -exec yourcommand {} + # or
find path/to/folder/ -type d -maxdepth 1 -print0 | xargs -z yourcommand

要在更多级别中使用 find path/to/folder/ -type d -exec yourcommand {} +,或在使用 shopt -s globstar

启用 globstar 后使用 yourcommand path/to/folder/**/*/