Merge files from /etc to one file using C


 
Thread Tools Search this Thread
Top Forums Programming Merge files from /etc to one file using C
# 1  
Old 06-20-2010
Question Merge files from /etc to one file using C

Hi guys,

I have a question which might be easy to answer but I don't how to do it.
The thing is I need to make a program in C which creates a file with all the content from the files in \etc.
I'm not new to C language but to UNIX.


I've read somewhere I need to use functions like f_read f_write for files but I don't know how to traverse the directory and append the each file's info in the new file.


thank you in advance!! Smilie

Sussie
# 2  
Old 06-21-2010
No so a "dummies" question...
Moved to more suitable forum: programming
# 3  
Old 06-26-2010
MySQL

So if anyone is interested about how it can be done, this works (more or less) but of course the code could be optimized.

Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/stat.h>

void listar(char *dir);

int main(int argc, char *argv[]){
	int dscr1, dscr2, i;
	char Buffer[512];
	dscr2 = creat("file.txt", 0666);
	DIR *d;
	struct dirent *ent;
	struct stat inode;
	if((d = opendir("/etc")) == NULL){
		printf("Couldn't open");
		perror("\etc");
		exit(1);
	}
	printf("\n");
	chdir("/etc");
	while(ent = readdir(d)){
		if((strncmp(".", ent->d_name) != 0) && (strncmp("..", ent->d_name) != 0)){
			lstat(ent->d_name, &inode);
			if(S_ISREG(inode.st_mode)){
				printf("%s\n", ent->d_name);
				if((dscr1 = open(ent->d_name, O_RDONLY)) == -1){
			                perror("ERROR");
					close(dscr1);
			                continue;
			        }
			        while (read(dscr1, &Buffer, 512)){
			                write(dscr2, Buffer, sizeof(Buffer));
			        }
				for(i = 0; i < 512; i++){
					Buffer[i] = ' ';
                                }
				close(dscr1);
			}
		}
	}
	printf("\n");
        close(dscr2);

	return 0;
}

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Merge different files into the original file

Hello Below is my requirement I have 3 files A1.txt , A2.txt and A3.txt . A2 is dynamically generating file I want the merge of A1,A2 and A3 in A2.txt Could you please help? (3 Replies)
Discussion started by: Pratik4891
3 Replies

2. Shell Programming and Scripting

Merge the multiple text files into one file

Hi All, I am trying to merge all the text files into one file using below snippet cat /home/Temp/Test/Log/*.txt >> all.txt But it seems it is not working. I have multiple files like Output_ServerName1.txt, Output_ServreName2.txt I want to merge each file into one single file and... (6 Replies)
Discussion started by: sharsour
6 Replies

3. UNIX for Dummies Questions & Answers

How to merge two files into third file?

Hi All, i have a requirement as below. There are two files. In 1st file a.txt i have four lines as below Ramesh Suresh Pradeep Franklin In 2nd file b.txt i have 5 lines as below Francis Elizabeth David John Ravi The output file suppose c.txt should contain 1st line of... (5 Replies)
Discussion started by: sureshk_85
5 Replies

4. UNIX for Dummies Questions & Answers

Merge files with file names added

I want to merge several files with identical format: file 1: rs3094315 0.0006105222804 0.9528743638 rs3131972 -0.05461465109 0.3139864854 rs3115860 -0.06041530955 0.3195499498 file 2: rs2073813 -0.06039552152 0.2956527097 rs11564776 -0.1864266568 ... (4 Replies)
Discussion started by: luoruicd
4 Replies

5. Shell Programming and Scripting

Merge two files into one file

Hi, I need help with merging two files. My requirement is as below: File 1: MachineA MachineB File 2: Process1 Process2 Desired File: MachineA Process1 MachineB Process2 If file 2 contains only one entry Process1, then second line in the desired output should be: MachineA Process1... (1 Reply)
Discussion started by: chiru_h
1 Replies

6. UNIX for Dummies Questions & Answers

merge files along with file names (awk)?

Dear programmers, I have a question about conditionally merging multiple files and having their file names in the first column. Input files: file.1.extension file.2.extension file.3.extension file.4.extension ... file.1000.extension where each file looks like this (with multiple lines):... (5 Replies)
Discussion started by: wei.deng
5 Replies

7. Shell Programming and Scripting

Merge 3 files in 1 file in an ordered way

Hi, I have a question that I cannot solve. if I have a file like this (lets say "x-values.dat"): x1 x2 x3 another file like this (lets say "y-values.dat"): y1 y2 y3 y4 and another file like this (lets say "p-values.dat"): p1 p2 p3 ... p12 How can I get this output? x1 y1 p1 x1 y2... (16 Replies)
Discussion started by: lego
16 Replies

8. Shell Programming and Scripting

merge two files into one file use awk

Hi, guys. I have one question: I have two files: passwd and shadow (the number of records in these files are not equal)the contents of them are below: passwd: ************** ftp:x:24:24: sshd:x:71:65: uucp:x:10:14: brownj:x:5005:1000: sherrys: x :5006:1000: ... ************* ... (2 Replies)
Discussion started by: daikeyang
2 Replies

9. Shell Programming and Scripting

Merge two files whose names are given in other file

Hi, I have a pointer file ptr.txt. There may be any number of files mentioned in the ptr.txt file eg: cat ptr.txt /home/abc.txt /home/pqr.txt /home/xyz.txt I have to read this pointer file and merge the files given in the pointer file so that final file say... (1 Reply)
Discussion started by: harshada
1 Replies

10. Shell Programming and Scripting

merge two files in one file

All, I've basic knowlege on understanding UNIX Shell Programming. Right now I need to write a script for the following requirement. Kindly help me or suggest me how to write a Shell script. I've 8 .csv files that are containing "Detail" records. Each file getting more than 1 million. Another... (3 Replies)
Discussion started by: nvkuriseti
3 Replies
Login or Register to Ask a Question