Script to list files not present in audio.txt file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script to list files not present in audio.txt file
# 1  
Old 07-18-2011
Script to list files not present in audio.txt file

I am having following folder structure.

/root/audios/pop
/root/audios/jazz
/root/audios/rock

Inside those pop, jazz, rock folders there are following files,
p1.ul, p2.ul, p3.ul, j1.ul, j2.ul, j3.ul, r1.ul, r2.ul, r3.ul

And I have a file named as "audio.txt" in the path /root/audios, which is having the following contents,
p1.ul
p2.ul
j1.ul
j2.ul
r1.ul
r2.ul

I have the following script named as script1.sh to check and display all the files present inside the folders when I pass "audio.txt" as a parameter.

Code:
#! /bin/sh
var = `cat $1`
for i in $var; do
find . -name "$i" -exec echo "$i" \;
end

$bash script1.sh audio.txt

Could you please modify the code for displaying the files that are not present.
i.e. it should display
p3.ul
j3.ul
r3.ul

Thanks in advance.
# 2  
Old 07-18-2011
I don't thinjk the script you gave us will work. At all. However try this to find those missing:
Code:
#! /bin/sh                          

while read i 
do                  
  for j in p1.ul p2.ul j1.ul j2.ul r1.ul r2.ul  
  do
     [ ! -f ${i}/${j} ]  && echo "${i}/${j} is missing"   
  done
done < /root/audios/audio.txt
end

# 3  
Old 07-18-2011
Quote:
Originally Posted by jim mcnamara
I don't thinjk the script you gave us will work. At all. However try this to find those missing:
Code:
#! /bin/sh                          
 
while read i 
do                  
  for j in p1.ul p2.ul j1.ul j2.ul r1.ul r2.ul  
  do
     [ ! -f ${i}/${j} ]  && echo "${i}/${j} is missing"   
  done
done < /root/audios/audio.txt
end

But hereyou have used
Quote:
for j in p1.ul p2.ul j1.ul j2.ul r1.ul r2.ul
Instead of hardcoding the filenames, is it possible to read them one by one from audio.txt and loop rather? Because there are many more files then I mentioned and its hard to hardcode each one of them..
# 4  
Old 07-18-2011
The following (untested) may be sufficient for your needs:
Code:
find /root/audios -type f -name '*.ul' | grep -vFf /root/audios/audio.txt

Regards,
Alister
# 5  
Old 07-19-2011
Quote:
Originally Posted by alister
The following (untested) may be sufficient for your needs:
Code:
find /root/audios -type f -name '*.ul' | grep -vFf /root/audios/audio.txt

Regards,
Alister
My bad, I framed the question little wrongly. I need the reverse scenario.

And little correction below as well,

Inside those pop, jazz, rock folders there are following files,
p1.ul, p2.ul, j1.ul, j2.ul, r1.ul, r2.ul

And I have a file named as "audio.txt" in the path /root/audios, which is having the following contents,
p1.ul
p2.ul
p3.ul
j1.ul
j2.ul
j3.ul
r1.ul
r2.ul
r3.ul

So I need to display p3.ul, j3.ul, r3.ul from audio.txt file which are not present in the those folders.

Thanks !
# 6  
Old 07-19-2011
If your shell supports process substitution:
Code:
grep -vFf <(find /root/audios -type f -name '*.ul' | sed 's/.*\///') /root/audios/audio.txt

Alternatively, you can use a temporary file:
Code:
ul_found=$TMPDIR/ul_found
find /root/audios -type f -name '*.ul' | sed 's/.*\///' > "$ul_found"
grep -vFf "$ul_found" /root/audios/audio.txt
rm "$ul_found"

If you intend to run multiple instances of the temp file version, you'll need a more robust scheme (using mktemp would be much better).

Another approach would be to take a sorted list of the basenames of the pathnames generated by find and use comm(1) to compare it against a sorted audio.txt.

Regards,
Alister
# 7  
Old 07-19-2011
Try this:
Code:
find /root/audios -name "*.ul" -exec basename {} \; > Found_Files.txt
egrep -v -f Found_Files.txt audio.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

UNIX script to append multiple text files into one file based on pattern present in filaname

Hi All-I am new to Unix , I need to write a script. Can someone help me with a requirement where I have list of files in a directory, I want to Merge the files if a pattern of string matches in filenames? AAAL_555A_ORANGE1_F190404.TXT AAAL_555A_ORANGE2_F190404.TXT AAAL_555A_ORANGE3_F190404.TXT... (6 Replies)
Discussion started by: Shankar455
6 Replies

2. Shell Programming and Scripting

How to copy all the contents of a list of files present in a folder to a particular file?

Hi All, I want to copy all the contents of a list of files in a folder to a particular file. i am using following command: cat dir/* >> newFile.txtIt's not working. Could you please help? Thanks, Pranav (3 Replies)
Discussion started by: Pranav Bhasker
3 Replies

3. Shell Programming and Scripting

List all the files in the present path and Folders and subfolders files also

Hi, I need a script/command to list out all the files in current path and also the files in folder and subfolders. Ex: My files are like below $ ls -lrt total 8 -rw-r--r-- 1 abc users 419 May 25 10:27 abcd.xml drwxr-xr-x 3 abc users 4096 May 25 10:28 TEST $ Under TEST, there are... (2 Replies)
Discussion started by: divya bandipotu
2 Replies

4. Solaris

list of files in a txt file from sftp location

I want equivalent of ftp in sftp for listing of files into local machine from sftp location. ftp>ls -l list.txt the above creates a file list.txt in the local machine's current directory. sftp>ls -l list.txt it is giving Couldn't stat remote file: No such file or directory is there... (1 Reply)
Discussion started by: megh
1 Replies

5. Shell Programming and Scripting

Script to run a command on all txt files present in a dir structure

Hi, I have a directory structure like the one given below root\a\b1 root\a\b2 root\b\b1 root\b\b2 . . . root\j\b1 root\j\b2 Now, there are a txt files in each dir and subdir, there is a root.txt I have to write a script where in i have to run a command called "genrb <filename>"... (6 Replies)
Discussion started by: vikramsinghnegi
6 Replies

6. Shell Programming and Scripting

How to Check whether list file present in TXT file exist or not

Hi All, I have txt file which has list of files. I have to check whether these files exist or not. Thanks supriya (6 Replies)
Discussion started by: supriyabv
6 Replies

7. Shell Programming and Scripting

Help needed in extracting text present between two headers in .txt file

Hi All, Please help me out in fllowing problem. I have text file which contains the data in following format. Contents of file.txt are setregid02 Test that setregid() fails and sets the proper errno values when a non-root user attemps to change the real or effective... (2 Replies)
Discussion started by: varshit
2 Replies

8. Solaris

list files .txt and .TXT in one command

Dear experts, In a directory i have both *.TXT and *.txt files. I have a script- for file in `ls *.txt`; do mv $file /tmp/$file How to list both *.txt and*.TXT file in one command so that script will move both .txt or .TXT whatever it find. br//purple (4 Replies)
Discussion started by: thepurple
4 Replies

9. Shell Programming and Scripting

ls > file - Creating file containing the list of all files present in a directory

Hi All, I need to create a file which contains the list of all the files present in that directory. e.g., ls /export/home/user/*.dat > list_file.dat but what i am getting is: $ ls /export/home/user/*.dat > list_file.dat /export/home/user/*.dat: No such file or directory But I have... (1 Reply)
Discussion started by: pranavagarwal
1 Replies

10. Shell Programming and Scripting

Script to find all the files that contain any of the words present in another file

Hi All, I am new to UNIX and shell scripts and also new to this forum. I need a script to find all the files in a directory that contain any of the strings present in another file. Please provide me the script or if you could provide pointers to any link in this forum it would be helpful.... (4 Replies)
Discussion started by: tsanthosh
4 Replies
Login or Register to Ask a Question