Searching File in Directory and all Subdirectory and Delete


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Searching File in Directory and all Subdirectory and Delete
# 8  
Old 02-08-2015
Is this a homework assignment?

If not, please explain what determines whether or not a file compared to your "parametrized" file should be kept or removed:
  1. Do the file names have to be the same?
  2. Do the file permissions have to be the same?
  3. Do the file owner and group IDs have to be the same?
  4. Do the file timestamps have to be the same?
  5. Do the file inode numbers have to be the same?
  6. Do the file contents have to be the same?
  7. If a file is a symbolic link, what should be removed? (The file to which the symlink points? The symlink itself? Both?)
# 9  
Old 02-08-2015
Here are the answers to your questions:

Is this a homework assignment?* Work related

If not, please explain what determines whether or not a file compared to your "parametrized" file should be kept or removed:
  1. Do the file names have to be the same? No
  2. Do the file permissions have to be the same? No
  3. Do the file owner and group IDs have to be the same? Yes
  4. Do the file timestamps have to be the same? No
  5. Do the file inode numbers have to be the same? No
  6. Do the file contents have to be the same? Yes
If a file is a symbolic link, what should be removed? (The file to which the symlink points? The symlink itself? Both?) File is not a symbolic link, both are physical files, both needs to be removed i.e. parametrized file and all other files which has exactly same contents under the directory structure which I explained above.

Last edited by rbatte1; 02-09-2015 at 12:16 PM.. Reason: Added LIST=1 tags for clarity
# 10  
Old 02-09-2015
You haven't said what operating system or shell you're using. The following seems to do what you have said you want done when using a system where ls -l output conforms to the standards and your shell accepts basic Bourne shell syntax (such as bash, ksh, and on almost any system /bin/sh):
Code:
#!/bin/ksh
for pfile in "$@"
do	ls -l "$pfile" | (
		read x x user group x
		find Directory1 -user "$user" -group "$group" -type f \
			-exec cmp -s "$pfile" {} \; \
			-exec echo rm {} +
		echo rm "$pfile"
	)
done

If you save the above script in a file (for example tester) and make it executable with:
Code:
chmod +x tester

then executing this script with one or more operands will show you all of the rm commands that would be needed to remove all files with the same user ID, group ID, and contents as the files named by operands in the file hierarchy rooted in Directory1:
Code:
./tester file1 file2

If the output from ls -l on your system doesn't print the user and group names as the 3rd and 4th fields in the output, adjust the read command to capture the user and group IDs in the correct fields.

If the output looks like it is correct, remove the echo in both lines shown in red to actually remove the files instead of just showing you what files would be removed.

You must be sure that the operands you pass to this script name files that are not in the file hierarchy rooted in Directory1. If any file operands do reside in the file hierarchy rooted in Directory1, that file (or those files) may be removed before all of the files that meet your criteria have been found.
# 11  
Old 02-09-2015
Thanks a lot Don, I really appreciate it. I am going to execute it and let you know.

---------- Post updated at 12:34 PM ---------- Previous update was at 10:47 AM ----------

Hi Don,

When I execute the script, it does not compare given file with others in the path. It gives me following output
Code:
Usage: cmp [-l | -s] File1 File2
rm /Dir1/o34620760.out

Thanks

Last edited by Scrutinizer; 02-09-2015 at 03:57 PM.. Reason: code tags for umpteenth time
# 12  
Old 02-09-2015
What operating system and shell are you using?
The cmp in the find -exec primary I supplied matches the synopsis form:
Code:
cmp -s File1 File2

shown in the diagnostic message, so please show us the exact text in your copy of my suggested script.
# 13  
Old 02-09-2015
OS: Unix
Shell is Korn Shell.

Script:

Code:
#!/usr/bin/ksh
for pfile in "$@"
do	ls -l "$Filename" | (
		read x x user group x
		find /u50/payments1 -user "$user" -group "$group" -type f \
			-exec cmp -s "$Filename" {} \; \
			-exec echo rm {} +
		echo rm "$Filename"
	)
done
return 0

File Name passed as parameter was /home/rjohn/abcd.out

Last edited by Don Cragun; 02-09-2015 at 05:45 PM.. Reason: Add CODE and ICODE tags.
# 14  
Old 02-09-2015
Quote:
Originally Posted by John William
OS: Unix
Shell is Korn Shell.

Script:

Code:
#!/usr/bin/ksh
for pfile in "$@"
do	ls -l "$Filename" | (
		read x x user group x
		find /u50/payments1 -user "$user" -group "$group" -type f \
			-exec cmp -s "$Filename" {} \; \
			-exec echo rm {} +
		echo rm "$Filename"
	)
done
return 0

File Name passed as parameter was /home/rjohn/abcd.out
The code you showed above would not produce the output you showed us in post #11. Note that in the script I suggested, there was no $Filename; all of the places you are using $Filename were $pfile in the script I suggested. If you want to use Filename as your variable name instead of pfile, that is fine; but you have to be consistent. You can't assign the pathnames given on the command line to the variable pfile and then use $Filename to reference that pathname. All four of the variables marked in red above must be identical.

And, for the record, UNIX is not an operating system; it is a brand that applies to several operating systems (such as AIX, HP/UX, OS X, and Solaris). If someone asks you what model of car you drive, they would expect an answer like 2014 Toyota Camry hybrid, not sedan.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Searching the file in a directory

Hi Folks, I am using the putty as I need to check the logs, My query is that I know the location of my logs ..that is cd /var /logs/abc.log so I can reach to this place and open the logs in putty, But what About if I do not the location only thing I know the name of the abc.log , and I have... (1 Reply)
Discussion started by: KAREENA18
1 Replies

2. Shell Programming and Scripting

Move all files not in a directory into a subdirectory named for each given file

Hi Everyone! Looking for some help with a script that will take all files in any given root folder (which are not already in a folder) and put them into separate folders with the name of each given file. Any ideas? Thank you! (1 Reply)
Discussion started by: DanTheMan
1 Replies

3. Shell Programming and Scripting

How can i find a word inside a file from a directory and it's subdirectory ?

Suppose i have a word "mail". I have to search this word in all files inside a directory and it's sub-directories. It will also search in all hidden directory and sub-directories. If it finds this word in any file it will list that file. How can i do this with perl/ruby/awk/sed/bash or... (9 Replies)
Discussion started by: cola
9 Replies

4. Shell Programming and Scripting

Copy file after searching in a directory

Hi, I am looking for an answer for following senario: I have a text file (base.txt) which consist list of files to be searched like: base.txt abc.txt def.txt fgh.txt Now i am going to search all the listed files in another directory after reading them one by one, once i found the... (10 Replies)
Discussion started by: apjneeraj
10 Replies

5. Shell Programming and Scripting

Sum of file size in directory / subdirectory

Hi , I am trying to write something to find the size of particular type of files in a directory & it's subdirectory and sum the size .. These types of file are found at directory level or its subdirectories level .. #!/bin/ksh FNAME='.pdf' S_PATH=/abc/def/xyz find $S_PATH -exec ls -lad... (4 Replies)
Discussion started by: Vaddadi
4 Replies

6. Shell Programming and Scripting

Shell script for searching a record,copy to a file and then delete it

Hi, I have a requirement in hand: I have a file with millions of records say file 1.I have another file, say file 2 which has 2000 records in it. The requirement is to read file2 , and remove the read record from file 1 and move i to a seperate file, file 3. For eg: Read file 2, get the... (5 Replies)
Discussion started by: kumara2010
5 Replies

7. UNIX for Dummies Questions & Answers

Create Year directory, date subdirectory and archive the file

Hi, After checking all the UNIX threads, I am able to come up with a solution so far. I am working on a shell script where it moves the files to a certain directory. The conditions to check are 1) Check if the file exists in the current directory. 2) Check if the destination directory... (2 Replies)
Discussion started by: madhunk
2 Replies

8. Shell Programming and Scripting

Find files including subdirectory and Delete

Hello Experts, I m newbie. Could u pls help me to write script on Sun solaris- I have backup directory "/var/opt/backup/" where files are backed up in different directory "backup1" "backup2" "backup3". I want to write a shell script which i will put in crontab and daily midnight it will... (1 Reply)
Discussion started by: thepurple
1 Replies

9. Shell Programming and Scripting

searching each file in a directory for text

what command can i use to search the files in a directory for a text. the output would list the files containing the text. ive tried this but it is not exactly what im looking to do: find . -name "*.xml" -exec agrep searchstring {} \; (2 Replies)
Discussion started by: jim majors
2 Replies

10. Shell Programming and Scripting

How to calculate file's size in directory and subdirectory

Hi, I have written one script to calculate total space of all file in one directory, ignoring subdirectory, it works fine. Now, I've been trying to calculate all files which includes files in any subdirectories. I use recursive function to do this, but it can work only if there is only one... (4 Replies)
Discussion started by: KLL
4 Replies
Login or Register to Ask a Question