可以遞歸遍歷文件夾下所有文件,根據文件大小和修改時間進行判斷,把修改過的新版本覆蓋舊版本。
本人並沒有在Linux下編程的經驗,只能給出思路,你找找Linux的系統調用,裡面有需要文件操作功能,復制文件夾無非就是先創建文件夾,然後在把文件夾下的文件復制過來。對於文件夾內的文件夾,使用遞歸進行遍歷。
我想你對遞歸應該了解,如果不想用系統調用的話,在Linux下我記得命令mkdir是創建文件夾,cp是復制文件,這樣你可以在程序內使用system("mkdir 文件夾名")來進行創建文件夾,對應的可以用cp復制文件,不過這樣比用系統調用效率低點
另:個人理解,Linux的系統調用跟Windows的API比較類似
B. Linux下C語言:如何遍歷制定目錄及其子目錄下所有文件的文件名並將其按照最後修改時間排序呢
linux中有相關的API函數,可以讀取目錄中所有的文件名字,以及時間屬性信息,你把這些信息讀出來,利用各種排序演算法排序就可以了
C. 欲在Linux系統下使用終端編寫C語言程序,打算使用findfirst()、findnext()和fin
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
int
main(int argc, char *argv[])
{
intptr_t handle;
struct _finddata_t fileinfo;
handle = _findfirst("D:\\mymtom\\src\\demo\\*.c", &fileinfo);
if (handle == -1) {
屬perror("_findfirst");
exit(1);
}
printf("%s\n",fileinfo.name);
while (_findnext(handle, &fileinfo) == 0) {
printf("%s\n",fileinfo.name);
}
_findclose(handle);
return 0;
}
D. linux 腳本代碼出現問題
[ $count -gt 0 ]都需要空格的
E. linux shell 遍歷文件夾 並將結果保存 到變數
#!/bin/bash
(($#<1))&&echo"paramiszero!"&&exit1
[!-d$1]&&echo"$1notpath"&&exit1
dir=$1
dir_p="$dirDirectory:"
cd$dir
dir=`pwd`
foriin`ls$dir`
do
if[-d$i];then
/tmp/sh/dir_file$i#我的腳本文件在/tmp/sh中,需要改一下這里
else
dir_p="$dir_pFile$i"
fi
done
cd..
echo$dir_p
實驗結果:
[root@localhost sh]# ./dir_file /tmp/python/
python_2 Directory : File 1.log File 2.log
python_3 Directory : File 3.log
/tmp/python/ Directory : File p File t.py File y.py
這樣應該可版以吧,試試看權
F. linux C 中的文件夾遍歷dirent d_type表明該文件的類型 跪求~~~
enum
{
DT_UNKNOWN = 0,
# define DT_UNKNOWN DT_UNKNOWN
DT_FIFO = 1,
# define DT_FIFO DT_FIFO
DT_CHR = 2,
# define DT_CHR DT_CHR
DT_DIR = 4,
# define DT_DIR DT_DIR
DT_BLK = 6,
# define DT_BLK DT_BLK
DT_REG = 8,
# define DT_REG DT_REG
DT_LNK = 10,
# define DT_LNK DT_LNK
DT_SOCK = 12,
# define DT_SOCK DT_SOCK
DT_WHT = 14
# define DT_WHT DT_WHT
};
這是d_type的枚舉類型..........每個值表示一個類型..........4是目錄,0是未知,1是管道,2是字元設備,8表示文件...............6是塊設備..........其他的都如字面表示..........很容易區分.........
G. 如何在linux系統中用C語言編程實現以非遞歸的方式查詢指定目錄下所有子目錄的全部文件並保存文件名
把迭代得到的非文件文件夾項,即子目錄保存到一個stack中。
隨後逐個彈出棧頂元素並迭代之,就實現了以非遞歸方式遍歷文件夾。
H. linux下C語言怎麼統計某個目錄下的文件個數
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>
#define MAX 1024
int get_file_count(char *root)
{
DIR *dir;
struct dirent * ptr;
int total = 0;
char path[MAX];
dir = opendir(root); /* 打開目錄*/
if(dir == NULL)
{
perror("fail to open dir");
exit(1);
}
errno = 0;
while((ptr = readdir(dir)) != NULL)
{
//順序讀取每一個目錄項;
//跳過「..」和「.」兩個目錄
if(strcmp(ptr->d_name,".") == 0 || strcmp(ptr->d_name,"..") == 0)
{
continue;
}
//printf("%s%s/n",root,ptr->d_name);
//如果是目錄,則遞歸調用 get_file_count函數
if(ptr->d_type == DT_DIR)
{
sprintf(path,"%s%s/",root,ptr->d_name);
//printf("%s/n",path);
total += get_file_count(path);
}
if(ptr->d_type == DT_REG)
{
total++;
printf("%s%s/n",root,ptr->d_name);
}
}
if(errno != 0)
{
printf("fail to read dir"); //失敗則輸出提示信息
exit(1);
}
closedir(dir);
return total;
}
int main(int argc, char * argv[])
{
int total;
if(argc != 2)
{
printf("wrong usage/n");
exit(1);
}
total = get_file_count(argv[1]);
printf("%s ha %d files/n",argv[1],total);
return 0;
}