首页 > 系统相关 >[C++]linux下实现ls()函数遍历目录

[C++]linux下实现ls()函数遍历目录

时间:2022-10-26 10:03:33浏览次数:49  
标签:std name C++ ret ss ls file linux dir

int ls(std::string path,std::string& ret)
  {
  DIR* dirp= opendir(path.c_str());
  if(!dirp)
  {
  return -1;
  }
  struct stat st;
  struct dirent *dir;
  std::vector<:string> file_name;

  std::vector<:string> dir_name;

  while((dir=readdir(dirp)) != NULL)
  {
  if(strcmp(dir->d_name,".")==0 ||
  strcmp(dir->d_name,"..")==0)
  {
  continue;
  }
  std::string full_path=path + dir->d_name;
  if(lstat(full_path.c_str(),&st)==-1)
  {
  continue;
  }
  std::string name=dir->d_name;
  //replace the blank char in name with "%$".
  while(name.find(" ") !=std::string::npos)
  {
  name.replace(name.find(" "),1,"$%");
  }
  if(S_ISDIR(st.st_mode)) //S_ISDIR()崎登僅頁倦頁朕村猟周
  {
  name +="[d]";
  dir_name.push_back(name);
  }
  else
  {
  file_name.push_back(name);
  }
  }
  closedir(dirp);
  sort(file_name.begin(),file_name.end());
  sort(dir_name.begin(),dir_name.end());
  std::stringstream ss_ret;
  int count=0;
  for(auto i=dir_name.begin();i!=dir_name.end();i++)
  {
  ss_ret<
  count++;
  if(count%5==0)
  {
  ss_ret<<:endl>
  }
  else
  {
  ss_ret<
  }
  }
  for(auto i=file_name.begin();i!=file_name.end();i++)
  {
  ss_ret<
  count++;
  if(count%5==0) //耽励倖兆忖指概。
  {
  ss_ret<<:endl>
  }
  else
  {
  ss_ret<
  }
  }
  ret = ss_ret.str();
  return 0;
  }

标签:std,name,C++,ret,ss,ls,file,linux,dir
From: https://blog.51cto.com/yetaotao/5796925

相关文章

  • VMware 安装Linux系统
    1、启动VMware,进入主界面2、点击“创建新的虚拟机”,进入创建虚拟机向导界面,建议初学者选择“典型(推荐)”3、点击“下一步”按钮,进入“安装客户机操作......
  • 执行linux命令,其中显示当前目录下的文件命令是
    展开全部linux系统下用ls命令列出当前目录下的文件。ls命令将每个由Directory参数指定的目录或者每个由File参数指定的名称写到标准输出,以及您所要求的和......
  • linux C 获取当前目录的实现
    linuxC获取当前目录的实现://获取当前目录#include#include#include#include//包含了LinuxC中的函数getcwd()#define......
  • linux 怎么对目录设置限额
    LINUX下磁盘限额的配置(以CentOS版本为例):1、编辑修改/etc/fstab文件vim/etc/fstabLABEL=//ext3defaults11#改为:LABEL=//ext3defaults,usrquo......
  • VMwareHorizon7.6官方中文版Linux桌面配置指南linux
    适用于Linux的VMwareHorizonClient安装和设置指南2020-04-18本《适用于Linux的VMwareHorizonClient安装和设置指南》文档提供了有关在Linux客户......
  • VMware安装Linux提示此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
    1.问题描述配置好虚拟机后,在启动虚拟机时,弹出如下报错:2.解决办法情况一:如果进入BIOS后,默认IntelVirtualizationTechnology选项是Disabled(关闭),则可以......
  • VMware安装Linux系统
    参考了很多资料都无法解决,尝试了卸载VMware安装12版本,再安装Ubuntu系统,还是卡在如上界面,也尝试了如下博主所示方法,仍不行后解决方法为去Ubuntu官网下载一个其它......
  • VMware安装Linux详细教程
    本文涉及到VMware安装linux与磁盘分区、配置网络、设置快照、克隆系统四部分的详细教程。除基本自定义安装外,还包含对磁盘的分区1.点击新建虚拟机,选择自定义,......
  • Linux 安装 jdk
    目录1.下载jdk82.源码包解压3.配置jdk环境变量4.测试是否安装成功操作系统:Centos6.464位工具:Xftp5、Xshell51.下载jdk8方法一:官网手动下载下载Linux环境下的jdk......
  • TLS1.0的加密方式升级成TSL 1.2的方法
    Theconnectionusedtoloadresourcesfromhttps://www.xxx.netusedTLS1.0orTLS1.1,whicharedeprecatedandwillbedisabledinthefuture.Oncedisabled......