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


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Need help how to create a file (xml) list all files from directory
# 1  
Old 10-14-2012
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:
Code:
0001 More Than I Can Say.vob
0002 Morning Has Broken.vob 
....
0010 Unchained Melody.vob

1-Here are my two small directories called Directory-1 and Directory-2 with .vob files.

Directory-1:
total 0
Code:
-rw-r--r-- 1 root root 0 2012-10-14 11:15 0001 More Than I Can Say.vob
-rw-r--r-- 1 root root 0 2012-10-14 11:20 0002 Morning Has Broken.vob
-rw-r--r-- 1 root root 0 2012-10-14 11:16 0003 My Way Rumba.vob
-rw-r--r-- 1 root root 0 2012-10-14 10:56 0004 Papa.vob
-rw-r--r-- 1 root root 0 2012-10-14 11:19 0005 Touch By Touch.vob

Directory-2:
total 0
Code:
-rw-r--r-- 1 root root 0 2012-10-14 10:52 0006 Unchained Melody.vob
-rw-r--r-- 1 root root 0 2012-10-14 10:52 0007 Unchained Melody.vob
-rw-r--r-- 1 root root 0 2012-10-14 10:52 0008 Unchained Melody.vob
-rw-r--r-- 1 root root 0 2012-10-14 10:52 0009 Unchained Melody.vob
-rw-r--r-- 1 root root 0 2012-10-14 10:53 0010 Unchained Melody.vob

I would like to run command(s) to create a file name KaraokeDB.xml from the directories above, and the content of the KaraokeDB.xml as below.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<Karaoke>
<item name= "0001 More Than I Can Say.vob" id="1">/Directory-1/0001 More Than I Can Say.vob</item>
<item name= "0002 Morning Has Broken.vob" id="2">/Directory-1/0002 Morning Has Broken.vob</item>  
<item name= "0003 My Way Rumba.vob" id="3">/Directory-1/0003 My Way Rumba.vob</item>  
<item name= "0004 Papa.vob" id="4">/Directory-1/0004 Papa.vob</item>
<item name= "0005 Touch By Touch.vob" id="5">/Directory-1/0005 Touch By Touch.vob</item>
<item name= "0006 Unchained Melody.vob" id="6">/Directory-2/0006 Unchained Melody.vob</item>
<item name= "0007 Unchained Melody.vob" id="7">/Directory-2/0007 Unchained Melody.vob</item> 
<item name= "0008 Unchained Melody.vob" id="8">/Directory-2/0008 Unchained Melody.vob</item>
<item name= "0009 Unchained Melody.vob" id="9">/Directory-2/0009 Unchained Melody.vob</item>
<item name= "0010 Unchained Melody.vob" id="10">/Directory-2/0010 Unchained Melody.vob</item>
</Karaoke>

Thank you so much for all help.

Last edited by Scott; 10-14-2012 at 10:28 PM.. Reason: Code tags
# 2  
Old 10-14-2012
This is one way to do it:
Code:
dir1="dir1"
dir2="dir2"
echo "<?xml version="1.0" encoding="UTF-8"?>" >xml_file.xml
echo "<Karaoke>" >>xml_file.xml
for x in `ls -1 ${dir1}/* ${dir2}/*`
do
  IFS=$'\n'
  file=`echo ${x} | sed 's/.*\/\|.*\///g'`
  dir=`echo ${x} | sed 's/\/.*//g'`
  echo "<item name= \"${file}\" id=\"1\">/$dir/$file</item>" >>xml_file.xml
done
echo "</Karaoke>" >>xml_file.xml


$ cat xml_file.xml
<?xml version=1.0 encoding=UTF-8?>
<Karaoke>
<item name= "0001 More Than I Can Say.vob" id="1">/dir1/0001 More Than I Can Say.vob</item>
<item name= "0002 Morning Has Broken.vob" id="1">/dir1/0002 Morning Has Broken.vob</item>
<item name= "0003 My Way Rumba.vob" id="1">/dir1/0003 My Way Rumba.vob</item>
<item name= "0004 Papa.vob" id="1">/dir1/0004 Papa.vob</item>
<item name= "0005 Touch By Touch.vob" id="1">/dir1/0005 Touch By Touch.vob</item>
<item name= "0006 Unchained Melody.vob" id="1">/dir2/0006 Unchained Melody.vob</item>
<item name= "0007 Unchained Melody.vob" id="1">/dir2/0007 Unchained Melody.vob</item>
<item name= "0008 Unchained Melody.vob" id="1">/dir2/0008 Unchained Melody.vob</item>
<item name= "0009 Unchained Melody.vob" id="1">/dir2/0009 Unchained Melody.vob</item>
<item name= "0010 Unchained Melody.vob" id="1">/dir2/0010 Unchained Melody.vob</item>
</Karaoke>


Last edited by fpmurphy; 10-15-2012 at 11:08 AM.. Reason: removed fonts and colors, fixed up XML output
This User Gave Thanks to spacebar For This Post:
# 3  
Old 10-14-2012
Hello Spacebar,

Thank you so much for your help. I copied your code and run it. The result is almost there. Would you please help to fix two small problems below.

1-The file name is broke down to multiple file names because of the file name contains space bar.

2-The id counter should counter id=1, id=2 ,id=3 etc...

Otherwise it's perfect. Here is the output from your code.
Code:
<?xml version=1.0 encoding=UTF-8?>
<Karaoke>
<item name= "0001" id="1">/dir1/0001</item>
<item name= "More" id="1">/More/More</item>
<item name= "Than" id="1">/Than/Than</item>
<item name= "I" id="1">/I/I</item>
<item name= "Can" id="1">/Can/Can</item>
<item name= "Say.vob" id="1">/Say.vob/Say.vob</item>
<item name= "0002" id="1">/dir1/0002</item>
<item name= "Morning" id="1">/Morning/Morning</item>
<item name= "Has" id="1">/Has/Has</item>
<item name= "Broken.vob" id="1">/Broken.vob/Broken.vob</item>
<item name= "0003" id="1">/dir1/0003</item>
<item name= "My" id="1">/My/My</item>
<item name= "Way" id="1">/Way/Way</item>
<item name= "Rumba.vob" id="1">/Rumba.vob/Rumba.vob</item>
<item name= "0004" id="1">/dir1/0004</item>
<item name= "Papa.vob" id="1">/Papa.vob/Papa.vob</item>
<item name= "0005" id="1">/dir1/0005</item>
<item name= "Touch" id="1">/Touch/Touch</item>
<item name= "By" id="1">/By/By</item>
<item name= "Touch.vob" id="1">/Touch.vob/Touch.vob</item>
<item name= "0006" id="1">/dir2/0006</item>
<item name= "Unchained" id="1">/Unchained/Unchained</item>
<item name= "Melody.vob" id="1">/Melody.vob/Melody.vob</item>
<item name= "0007" id="1">/dir2/0007</item>
<item name= "Unchained" id="1">/Unchained/Unchained</item>
<item name= "Melody.vob" id="1">/Melody.vob/Melody.vob</item>
<item name= "0008" id="1">/dir2/0008</item>
<item name= "Unchained" id="1">/Unchained/Unchained</item>
<item name= "Melody.vob" id="1">/Melody.vob/Melody.vob</item>
<item name= "0009" id="1">/dir2/0009</item>
<item name= "Unchained" id="1">/Unchained/Unchained</item>
<item name= "Melody.vob" id="1">/Melody.vob/Melody.vob</item>
<item name= "0010" id="1">/dir2/0010</item>
<item name= "Unchained" id="1">/Unchained/Unchained</item>
<item name= "Melody.vob" id="1">/Melody.vob/Melody.vob</item>
</Karaoke>


Last edited by Scott; 10-14-2012 at 10:29 PM.. Reason: Code tags, please...
# 4  
Old 10-14-2012
Yep I ran the statements from the command line, Try this since your running it as a shell script:
Code:
dir1="dir1"
dir2="dir2"
echo "<?xml version="1.0" encoding="UTF-8"?>" >xml_file.xml
echo "<Karaoke>" >>xml_file.xml
IFS=$'\n'
for x in `ls -1 ${dir1}/* ${dir2}/*`
do
  file=`echo ${x} | sed 's/.*\/\|.*\///g'`
  dir=`echo ${x} | sed 's/\/.*//g'`
  echo "<item name= \"${file}\" id=\"1\">/$dir/$file</item>" >>xml_file.xml
done
echo "</Karaoke>" >>xml_file.xml


Last edited by fpmurphy; 10-15-2012 at 11:09 AM.. Reason: removed color and font directives
This User Gave Thanks to spacebar For This Post:
# 5  
Old 10-15-2012
Hello Spacebar,

Your code is working perfectly. Thank you so much for your big help. I was able to load the .xml file with more than 10K songs to the iPhone, now I have a list of Karaoke on my iPhone instead of a binder with more than two hundreds pages.

Thank you so much again.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Create one xml file from one list of names

Actually I have one list of channels names like: Rai 1 Rai 1 +1HD Rai 1 +2HD Rai 2 Rai 2 +1HD Rai 2 +2HD . . . .From this list of names I need create one new xml file with this structure <channel id="Rai 1"> <display-name lang="it">Rai 1</display-name> <icon... (3 Replies)
Discussion started by: Tapiocapioca
3 Replies

2. UNIX for Beginners Questions & Answers

How to create a summary file of all files in a directory sorted in reverse alphabetical order.?

I have an interactive script which works terrific at processing a folder of unsorted files into new directories. I am wondering how I could modify my script so that( upon execution) it provides an additional labelled summary file on my desktop that lists all of the files in each directory that... (4 Replies)
Discussion started by: Braveheart
4 Replies

3. Shell Programming and Scripting

List files with date, create directory, move to the created directory

Hi all, i have a folder, with tons of files containing as following, on /my/folder/jobs/ some_name_2016-01-17-22-38-58_some name_0_0.zip.done some_name_2016-01-17-22-40-30_some name_0_0.zip.done some_name_2016-01-17-22-48-50_some name_0_0.zip.done and these can be lots of similar files,... (6 Replies)
Discussion started by: charli1
6 Replies

4. Shell Programming and Scripting

Extract strings from XML files and create a new XML

Hello everybody, I have a double mission with some XML files, which is pretty challenging for my actual beginner UNIX knowledge. I need to extract some strings from multiple XML files and create a new XML file with the searched strings.. The original XML files contain the source code for... (12 Replies)
Discussion started by: milano.churchil
12 Replies

5. Shell Programming and Scripting

Create empty files from a list on file

Hello Guys. Please I would like to create empty files from a list In file1 will be the followin values, so i will like to create for each name a empty file. file1 2191off-r0.sps 2192off-r0.sps 2193off-r0.sps 2194off-r0.sps 2195off-r0.sps So I need to get 5 empty files. Thanks for... (7 Replies)
Discussion started by: jiam912
7 Replies

6. Programming

help need in the perl script that create one xml file form multiple files.

Hi every one, Please excuse me if any grammatical mistakes is there. I have multiple xml files in one directory, I need to create multiple XML files into one XML file.example files like this</p> file1:bvr.xml ... (0 Replies)
Discussion started by: veerubiji
0 Replies

7. Shell Programming and Scripting

How to create multiple list of files in a directory ?

Hi, i have say 100 files in a directory. file1.log file2.log file3.log file4.log file5.log file6.log ... ... ... file99.log file100.log ========= I need to create another file which contains the list of al these log files. each file should contain only 10 log file names. it shud... (4 Replies)
Discussion started by: robinbannis
4 Replies

8. Shell Programming and Scripting

create diffrent files based on other file and parameters list

I would like ot create shell script/ bash to create diffrent files based on a file and parameters list. Here is the detail example: I have a textfile and four static parameter files (having ‘?'). mainfile.txt has below records (this count may be more than 50) A200001 A200101 B200001... (9 Replies)
Discussion started by: raghav525
9 Replies

9. Shell Programming and Scripting

Parse an XML task list to create each task.xml file

I have an task definition listing xml file that contains a list of tasks such as <TASKLIST <TASK definition="Completion date" id="Taskname1" Some other <CODE name="Code12" <Parameter pname="Dog" input="5.6" units="feet" etc /Parameter> <Parameter... (3 Replies)
Discussion started by: MissI
3 Replies
Login or Register to Ask a Question