歡迎您光臨本站 註冊首頁

linux下tree、命令的用法及實現代碼

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

linux下tree、命令的用法及實現代碼

linux下tree、命令的用法及實現代碼

Linux下有這樣一個命令,可以把當前目錄下的所有文件和子文件以tree的方式顯示出來,看下效果

[www.linuxidc.com@localhost test]$ tree  
.  
|-- A  
|-- B  
|-- C  
`-- test2  
    |-- D  
    |-- E  
    `-- F  
  
3 directories, 4 files  
$   
自己用遞歸方式用C實現了下,效果如下: [www.linuxidc.com@localhost test]$ ./a.out   
./test  A  
  a.out  
  B  
  C  
  +test2  
    F  
    +D  
    +E  
$   這裡+號表示directory.

下面是源碼:#include    
#include    
#include    
#include    
using namespace std;  
  
int showConsoleDir(char* path, int cntFloor) {  
    DIR* dir;  
    DIR* dir_child;  
    struct dirent* dir_ent;  
  
    if ((dir = opendir(path))==NULL) {   //open current directory   
        cout<<"open dir failed!"<<endl;  
        return -1;  
    }  
    while ((dir_ent = readdir(dir))!=NULL) {  
        if ((dir_ent->d_name == '.') || (strcmp(dir_ent->d_name, "..") ==0)){   //if . or .. directory continue   
            continue;  
        }  
        char tName;  
        memset(tName, 0, 10000);  
        snprintf(tName,sizeof(tName),"%s/%s",path,dir_ent->d_name);  
        if ((dir_child = opendir(tName))!=NULL){  //if have a directory   
            int t = cntFloor;  
            while (t--) {  
                cout<<"  ";  
            }  
            cout<<"+"<d_name<<endl;  
            showConsoleDir(tName, cntFloor+1);  
        }  
        else  
        {  
            int t = cntFloor;  
            while (t--) {  
                cout<<"  ";  
            }  
            cout<d_name<<endl;  
        }     
    }     
}  
  
int main(int argc, char* argv[]){  
    int cntFloor=1;  
    showConsoleDir("./", cntFloor);  
  
      
}  
《解決方案》

謝謝分享了

[火星人 ] linux下tree、命令的用法及實現代碼已經有370次圍觀

http://coctec.com/docs/service/show-post-1492.html