*********************************************************************
根据关键字获取文件夹下文件完整名称(支持部分匹配)
pucSrcFilePath (输入)待查找的文件路径
pucSrcFileName (输入)待查找文件名称关键字
bFullPath (输入)是否携带路径的完整名称
pucDesFileName (输出)文件完整名称
*********************************************************************
long getFileName(char *pucSrcFilePath, char *pucSrcFileName, bool bFullPath, char *pucDesFileName)
{
long ulRet = 0;
char szSysCmd[129] = {0};
char szTmpBuf[64] = {0};
char *pucStartAdd = null;
char *pucEndAdd = null;
char *pcFindfileNameRes = "/tmp/uAllFileName";
pid_t status;
FILE *pFile = null;
long ulLen = 0;
if (0 != access(pucSrcFilePath, f_OK))
{
//没有这个路径
return -1;
}
snprintf(szSysCmd, 129, "find %s -name '*.txt' > %s", pucSrcFilePath, pcFindfileNameRes);
status = system(szSysCmd);
if(-1 == status)
{
//失败
}
else
{
if(WIFEXITED(status))
{
if(0 == WEXITSTATUS(status))
{
//检测到系统执行成功了
pFile = fopen(pcFindfileNameRes, "r");
if (null == pFile)
{
printf("open file[%s] fail, error:%s", pcFindfileNameRes, strerror(errno));
return -1;
}
if (null == fgets(szTmpBuf, sizeof(szTmpBuf), pFile))
{
return -1;
}
do
{
pucStartAdd = strstr(szTmpBuf, pucSrcFileName);
if (null != pucStartAdd)
{
if(true == bFullPath)
{
ulLen += IMOS_strlen(pucSrcFilePath);
strncpy(pucDesFileName, pucSrcFilePath, ulLen);
}
pucEndAdd = strstr(szTmpBuf, "\n");
if (null != pucEndAdd)
{
strncpy(pucDesFileName+ulLen, pucStartAdd, pucEndAdd- pucStartAdd);
}
else
{
strcpy(pucDesFileName+ulLen, pucStartAdd);
}
fclose(pFile);
return 0;
}
memset(szTmpBuf,0, sizeof(szTmpBuf));
}while(fgets(szTmpBuf, sizeof(szTmpBuf), pFile));
fclose(pFile);
//删除查找的文件
memset(szSysCmd,0, sizeof(szSysCmd));
snprintf(szSysCmd, 129, "rm -rf %s", pcFindfileNameRes);
system(szSysCmd);
}
}
else
{
printf("error %d", WIFEXITED(status));
return -1;
}
}
return ulRet;
}
Linux根据关键字获取文件夹下文件完整名称(支持部分匹配)
于 2023-03-20 19:38:41 首次发布