Visit Our UNIX and Linux User Community


Generating an xml having information related to files in the directory


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Generating an xml having information related to files in the directory
# 1  
Old 11-17-2009
Generating an xml having information related to files in the directory

Hi all,

Have to generate an xml having information related to files in the directory

Suppose i have file

file1.xml (datafile)
file2.xml (datafile)
file3.xml (metafile)

Now i need to generate an xml in the format >>
<?xml version="1.0" encoding="UTF-8"?>
<AuditFile Version="2.0">
<UnitOfWork UnitSequenceNr="1" FileCount="3" ArchiveID="106B">
<DataFile>
<FileName>file1</FileName>
<FileSize>10357</FileSize>
</DataFile>
<DataFile>
<FileName>file2</FileName>
<FileSize>19850</FileSize>
</DataFile>
<MetaFile>
<FileName>file3</FileName>
<FileSize>3430</FileSize>
</MetaFile>
</UnitOfWork>
</AuditFile
# 2  
Old 11-17-2009
You can do something like that :
Code:
ls -l *.xml 2>/dev/null | 
awk '
{
   sub(/\.[^.]*$/, "", $NF);  # Removes extension
   FileCount++;
   FileName[FileCount] = $NF;
   FileSize[FileCount] = $5;
}
END {
   print  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
   print  "<AuditFile Version=\"2.0\">";
   printf "<UnitOfWork UnitSequenceNr=\"1\" FileCount=\"%d\" ArchiveID=\"106B\">\n",FileCount

   for (f=1; f<=FileCount; f++) {
      print  "<DataFile>";
      printf "<FileName>%s</FileName>\n", FileName[f];
      printf "<FileSize>%d</FileSize>\n", FileSize[f];
      print  "</DataFile>";
   }

   print  "</UnitOfWork>";
   print  "</AuditFile>"
}
'

This solution display only DataFiles because I don't know how to differentiate DataFile and MetaFile.

Jean-Pierre.

Last edited by aigles; 11-18-2009 at 05:42 AM.. Reason: added statement for removing the file extension
# 3  
Old 11-17-2009
what does /dev/null means in
"ls -l *.xml 2>/dev/null "

---------- Post updated at 11:35 AM ---------- Previous update was at 11:21 AM ----------

cant we concatenate two different files together
# 4  
Old 11-18-2009
2>/dev/null : Redirect error messages to null device.
Code:
$ ls -l test.xml
test.xml not found
$ ls -l test.xml 2>/dev/null
$

To concatenate file1 and file2 into file3 :
Code:
$ ls file?
file1  file2
$ cat file1
Datas from file1
$ cat file2
Datas from file2
$ cat file1 file2 > file3
$ ls file?
file1  file2  file3
$ cat file3
Datas from file1
Datas from file2
$

Jean-Pierre.

---------- Post updated at 09:40 ---------- Previous update was at 09:31 ----------

2>/dev/null : Redirect error messages to null device.
Code:
$ ls -l test.xml
test.xml not found
$ ls -l test.xml 2>/dev/null
$

To concatenate file1 and file2 into file3 :
Code:
$ ls file?
file1  file2
$ cat file1
Datas from file1
$ cat file2
Datas from file2
$ cat file1 file2 > file3
$ ls file?
file1  file2  file3
$ cat file3
Datas from file1
Datas from file2
$

Jean-Pierre.
# 5  
Old 11-19-2009
Hi all,

As i am having close to 300k files in my database, so ls -l *.xml is failing.

I have file names like file1 to file300000...

Can i do this job in batches of 1000s and using '?' instead of '*' in ls command
# 6  
Old 11-19-2009
The following new version of script will work in your case :
Code:
ls -l  2>/dev/null | 
awk '
/\.xml$/ {
   sub(/\.[^.]*$/, "", $NF);  # Removes extension
   FileCount++;
   FileName[FileCount] = $NF;
   FileSize[FileCount] = $5;
}
END {
   print  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
   print  "<AuditFile Version=\"2.0\">";
   printf "<UnitOfWork UnitSequenceNr=\"1\" FileCount=\"%d\" ArchiveID=\"106B\">\n",FileCount

   for (f=1; f<=FileCount; f++) {
      print  "<DataFile>";
      printf "<FileName>%s</FileName>\n", FileName[f];
      printf "<FileSize>%d</FileSize>\n", FileSize[f];
      print  "</DataFile>";
   }

   print  "</UnitOfWork>";
   print  "</AuditFile>"
}
'

Jean-Pierre.
# 7  
Old 11-19-2009
Hi Jean-Pierre,

The above code is mentioning all the exisiting xmls in the file.

I want only those xmls which have a specific pattern.

I have 300k file s of some fixed pattern like
(Name.Version.1.xml)
to
(Name.Version.300000).xml

and frew of other format

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Generating xml file from UNIX

i have a unix script which generates the csv file. the data in csv file is dynamic. how can i convert/move the data from csv file to xml. please suggest (1 Reply)
Discussion started by: archana25
1 Replies

2. Shell Programming and Scripting

Copying xml files to a chosen directory

I want to determine if there's any xml files exist & if so copy each xml to that directory. Is my code correct for doing that? I can't test my script yet. Somebody please explain it to me please? if ]; then #print "No Status type XML files received from server in $DIRECTORY" else for... (2 Replies)
Discussion started by: emc^24sho
2 Replies

3. UNIX for Dummies Questions & Answers

Need help how to create a file (xml) list all files from directory

I have more than 10K songs in two directories on a hard drive. I would like to create a file list all of files name then change to .xml extension to upload to iPhone so I have a Karaoke list on my iPhone. I need your help to create a file by using command in Linux. Files names: 0001 More... (4 Replies)
Discussion started by: ggcc
4 Replies

4. Shell Programming and Scripting

Generating XML from a flatfile

Hi all, I am trying to generate an XML file from a flatfile in ksh/bash (could also use perl at a pinch, but out of my depth there!). I have found several good solutions on this very forum for cases where the header line in the file forms the XML tags, however my flatfile is as follows:... (5 Replies)
Discussion started by: ianmrid
5 Replies

5. Shell Programming and Scripting

Problem with script generating files in directory recursively

I have a script which generates recursively some files in folders for a given root folder. I have checks for permissions and it works for all folders except one(i have 777 permission on it). When i try calling the script in problematic folder(problematic folder being root folder), script works as... (2 Replies)
Discussion started by: bb2
2 Replies

6. Solaris

what is the use of each login related files present in users home directory

# ls -l total 10 -rw-r--r-- 1 dummy2 other 140 Jun 19 21:37 local.cshrc -rw-r--r-- 1 dummy2 other 136 Jun 19 21:37 local.cshrc~ -rw-r--r-- 1 dummy2 other 157 Jun 19 21:37 local.login -rw-r--r-- 1 dummy2 other 178 Jun 19 21:37 local.profile... (6 Replies)
Discussion started by: chidori
6 Replies

7. Shell Programming and Scripting

A script to scan a directory for XML files,

Hi, I am fairly new to unix/linux scripting (about 1 week) and have written a script to scan a directory for xml files, if found call and oracle procedure passing in the file name and then move the file once processed to an archive area. Now everything seems to be working except when there... (3 Replies)
Discussion started by: apacheuk
3 Replies

8. HP-UX

I am new to HPUX so kindly provide information related to it

Hello Gurus I am new to HPUX so kindly help me by providing information related to HPUX. I would like to know the date when HPUX 11i v3 comes in to market as well as I have H3056S student guide dated May 2005 which I download through some site. Now I want to know its a HPUX 11i v2 or HPUX 11i... (8 Replies)
Discussion started by: amity
8 Replies

9. UNIX for Advanced & Expert Users

Generating XML from XSD

Hi all, Am looking for a way to generate XML based on XSDs so that the final XML need not be validated against the XSDs again. Here is the part of the XSD <xsd:element name="first_element"> <xsd:complexType> <xsd:sequence> <xsd:element name="val"/> </xsd:sequence> ... (0 Replies)
Discussion started by: matrixmadhan
0 Replies

Featured Tech Videos