Linux目錄操作

2021-05-26 19:32:00 字數 3504 閱讀 8464

建立目錄:

#include

#include

int mkdir(const char *pathname,mode_t mode);

第乙個引數是要建立目錄的名字,第二個引數指定了目錄訪問許可權,程序的umask值會影響到最終生成目錄的許可權。

建立成功的時候返回0,失敗返回-1.mkdir會在建立的目錄同時建立"."和".."兩個鏈結。

刪除目錄:

#include

int rmdir(const char *pathname);

引數pathname指定要刪除的目錄的路徑名,只有在目錄為空的情況下呼叫才會成功。

開啟目錄:

#include

#include

dir *opendir(const char *dirname);

opendir的引數dirname指定要開啟目錄的路徑名,如果成功,opendir返回乙個指向dir型別的指標,返回指標將指向目錄

結構的第一項。呼叫失敗時系統會返回乙個空指標。

關閉目錄:

#include

int closedir(dir *dirptr);

closedir函式關閉引數dirptr所指向的目錄流,該目錄流通常是opendir呼叫的返回值。

讀取目錄:

#include

#include

struct dirent *readdir(dir *dirptr);

readdir接受的引數是目錄流指標,通常是函式opendir的返回值。第一次呼叫readdir後目錄的第一項將被返回到struct dirent

結構中。完成後目錄指標移動到目錄的下一項。

dirent型別結構在標頭檔案中定義,該結構包含以下成員:

ino_t d_ino;   //inode number

char d_name;//filename,null terminated

在連續的呼叫readdir後,目錄指標將到達目錄的尾部,再呼叫readdir將返回空指標。

如果想再從頭開始讀取目錄,可以採用rewinddir系統呼叫:

#include

#include

void rewinddir(dir *dirptr);

呼叫rewinddir之後,下乙個readdir呼叫將返回dirptr所指的目錄的第一項

loopingdir.c:類似ls命令

#include#include#includeint my_double_ls(const char *name)要開啟目錄的路徑

/*continue looping through the directory,

* printing out the directory entry name as long

* as the inode number is valid

*/while(d=readdir(dp))遍歷目錄

*/ printf("%s\n",d->d_name);

}/*now go back to the beginning of the directory*/

rewinddir(dp);//將目錄指標指向目錄的第一項

/*print out the directory again*/

while(d=readdir(dp))

if(closedir(dp)==-1)

return 0;

}int main(int argc,char **argv)

if(my_double_ls(argv[1])==-1)

return 0;}/*

執行結果如下:

jiang@jiangfeng:~/unixprog/2011-3-11$ ./loopingdir.o /home

.jiang

..lost+found

.jiang

..lost+found

*/

linux目錄操作例子:尋找特定目錄檔案

搜尋特定目錄找到以特定字尾結尾的檔案或子目錄。接受兩個命令列引數:要搜尋的目錄名,字尾字串。

#include/*for null*/

#include#include/*for string functions*/

#includeint match(const char *s1,const char *s2);

char *find_entry(char *dirname,char *suffix)

if((dp=opendir(dirname))==null)

while(d=readdir(dp))

if(match(d->d_name,suffix))

else

}}/*字串匹配時,返回1,不匹配返回0*/

int match(const char *s1,const char *s2)

else

return 0;

}int main(int argc,char **argv)

if((p=find_entry(argv[1],argv[2]))==null)

printf("%s\n",p);

return 0;

}

chdir系統呼叫:改變工作目錄

使用chdir改變工作目錄:

#include

int chdir(const char *path);

chdir呼叫使得呼叫其程序的當前工作目錄變為path所指向的目錄。改變當前工作目錄,然後使用相對路徑名訪問檔案要比使用絕對路徑名效率更高。在失敗的情況下返回-1

#include#include#include#define verybig 200

void my_pwd(void);

int main(int argc,char **argv)

printf("the olddir is :\n");

my_pwd();

chdir(argv[1]);

printf("the newdir is:\n");

my_pwd();

return 0;

}void my_pwd(void)

else

}

getcwd系統呼叫 :得到當前目錄

得到當前工作目錄名:

#include

char *getcwd(char *name,size_t size);

getcwd返回乙個指向當前工作目錄路徑名的指標,必須保證size引數要比最後返回的路徑名長度大1。工作路徑名也會儲存在name引數中。

#include#include#include#define verybig 200

void my_pwd(void);

int main(void)

void my_pwd(void)

else

}

Linux目錄操作

找到當前目錄 char getcwd char buf,size t size 將當前工作目錄的絕對路徑名複製到 buf中,size指示 buf大小,如果buf 不夠大,裝不下該路徑,則getcwd 函式返回 null int main void char buf 1024 char fd getc...

linux目錄操作

建立資料夾 mkdir 一 mkdir命令使用許可權 所有使用者都可以在終端使用 mkdir 命令在擁有許可權的資料夾建立資料夾或目錄。二 mkdir命令使用格式 格式 mkdir 選項 dirname 三 mkdir命令功能 通過 mkdir 命令可以實現在指定位置建立以 dirname 指定的檔...

Linux目錄操作

1 建立目錄 mkdir 用法 mkdir 選項 目錄.p 建立多級目錄 v 顯示建立過程 2 拷貝目錄 拷貝目錄並改名 用法 cp r 源目錄 目標位置 copy r 拷貝目錄 p 保持指定的屬性 模式,所有權,時間戳 a 定同於 drp 完整拷貝 帶屬性拷貝 v 顯示拷貝過程 重新命名 目標目錄...