【发布时间】:2013-07-24 12:27:34
【问题描述】:
我正在编写一个程序来使用闪存驱动器升级固件。我需要使用闪存设备中存在的映像升级内核。但我不知道如何在目录中找到带有 zimage 文件扩展名的文件。 我是 Qt 和 Linux 的新手。所以我不知道是否可以找到特定格式的文件。任何人都可以帮助解决这个问题。 提前致谢。
【问题讨论】:
我正在编写一个程序来使用闪存驱动器升级固件。我需要使用闪存设备中存在的映像升级内核。但我不知道如何在目录中找到带有 zimage 文件扩展名的文件。 我是 Qt 和 Linux 的新手。所以我不知道是否可以找到特定格式的文件。任何人都可以帮助解决这个问题。 提前致谢。
【问题讨论】:
在 Qt 中没有通用的方法可以访问整个文件系统上的操作系统搜索索引服务。因此,如果这是您想要的,那么像 @BЈовић 提供的特定于操作系统的解决方案将是必要的。
(注意:当程序让我明确指出某物的位置时,我实际上更喜欢它,而不是搜索整个文件系统......但如果它能够注意到必要的文件何时在与可执行文件相同的目录。)
无论如何...如果您知道要在其中搜索的目录,那么QDir 抽象将允许您设置过滤器并枚举与该目录中的过滤器匹配的文件名:
QDir dir (zimagePath);
QStringList filters;
filters << "*.zimage";
foreach (QString file, dir.entryList(filters, QDir::Files)) {
// ...
}
您可以阅读 QDir 文档以了解更多查看方式。
【讨论】:
您可以使用system() 执行下一个脚本,并解析输出:
#!/bin/bash
find / -name '*.zimage' | grep .zimage > /tmp/zimage_files.txt
请注意,上面的脚本将搜索所有文件和所有路径,并将输出放到/tmp/zimage_files.txt。如果你需要不同的东西,你需要稍微修改一下。
【讨论】: