Visit Our UNIX and Linux User Community


Script to delete files with an input for directories and an input for path/file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script to delete files with an input for directories and an input for path/file
# 1  
Old 06-28-2012
Question Script to delete files with an input for directories and an input for path/file

Hello,

I'm trying to figure out how best to approach this script, and I have very little experience, so I could use all the help I can get. Smilie

I regularly need to delete files from many directories.

A file with the same name may exist any number of times in different subdirectories.
When I perform the deletion, I will have a list of the upper level directories I want to delect the file path from, and a list of pathed files I want to delete from those directories only.

What would be the best way to set this up with the two input files?

For example, I need to delete:

Code:
/red/rotten/apple.t
/red/rotten/apple.x
/green/ripe/pear.t
/green/ripe/pear.x
/green/ripe/grapes.t
/green/ripe/grapes.x
/green/rotten/oranges.t
/green/rotten/oranges.x

from

Code:
/orchard1/old
/orchard1/new
/orchard2/old
/orchard2/new
/orchard6/old
/orchard6/new
/orchard8/old
/orchard8/new

But I want files with the same names elsewhere to be left alone.

Any assistance will be greatly appreciated! Smilie

Last edited by methyl; 06-28-2012 at 09:03 PM.. Reason: please use code tags
# 2  
Old 06-28-2012
Please post examples from the target directory and explain the deletion rules.
# 3  
Old 06-28-2012
This should get you started you might want to implement more actions (like prompt) and perhaps control which actions occur with command line args check out getopts

Code:
if [ $# -ne 2 ]
then
   echo "usage: $0 list_file dir_file"
   exit 1
fi
LIST_FILE=$1
DIR_FILE=$2
if [ ! -f "$LIST_FILE" ]
then
   echo "unable to open list_file: $LIST_FILE"
   exit 2
fi
if [ ! -f "$DIR_FILE" ]
then
   echo "unable to open dir_file: $DIR_FILE"
   exit 3
fi
found=0
for action in list count del
do
    for del_dir in $(cat $DIR_FILE)
    do
        for del_path in $(cat $LIST_FILE)
        do
            [ -f ${del_dir}/${del_path} ] && case $action in
               count) let found=found+1 ;;
               list) echo "  ${del_dir}/${del_path}" ;;
               del) rm ${del_dir}/${del_path} ;;
            esac
        done
    done
    if [ $action = "count" ]
    then
        [ $found -eq 0 ] && echo "No files found to delete" && exit 5
        printf "OK to delete %d file(s) (Y/N)? " $found
        read ans
        [ "$ans" != "Y" -a "$ans" != "y" ] && exit 0
    fi
done

# 4  
Old 06-28-2012
If interactivity is not required, if there are no blank lines in either file, and if your pathnames (both directories and files) do not contain any whitespace:

Code:
join -12 -22 dirs files | tr -d ' ' | xargs echo rm --

PROCEED WITH CAUTION: I cannot emphasize that enough. If the rm commands printed are acceptable, remove the word "echo" to delete the files. Error messages from non-existent files are harmless. To silence them, append 2>/dev/null (or redirect to some other file).

Regards,
Alister

Previous Thread | Next Thread
Test Your Knowledge in Computers #981
Difficulty: Medium
The follow operating systems are all examples of monolithic kernels: OpenVMS, Linux, BSD, SunOS, AIX, and MULTICS.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read input files and merge them in given order and write them to input one param or one file

Dear Friends, I am looking for a shell script to merge input files into one file .. here is my idea: 1st paramter would be outfile file (all input files content) read all input files and merge them to input param 1 ex: if I pass 6 file names to the script then 1st file name as output file... (4 Replies)
Discussion started by: hyd1234
4 Replies

2. Shell Programming and Scripting

Script to delete files older than x days and also taking an input for multiple paths

Hi , I am a newbie!!! I want to develop a script for deleting files older than x days from multiple paths. Now I could reach upto this piece of code which deletes files older than x days from a particular path. How do I enhance it to have an input from a .txt file or a .dat file? For eg:... (12 Replies)
Discussion started by: jhilmil
12 Replies

3. Shell Programming and Scripting

Find Files with a input in directories

So i have directories that store logs, 1 directorie for each day, with the name like this : 2012_07_01/ 2012_07_02/ and for each directorie we have the logs, inside them lives the logs for that day, and every log have this name pattern : ... (2 Replies)
Discussion started by: drd0spt
2 Replies

4. Shell Programming and Scripting

Need to delete large set of files (i.e) close to 100K from a directory based on the input file

Hi all, I need a script to delete a large set of files from a directory under / based on an input file and want to redirect errors into separate file. I have already prepared a list of files in the input file. Kndly help me. Thanks, Prash (36 Replies)
Discussion started by: prash358
36 Replies

5. UNIX for Dummies Questions & Answers

Bash script to delete file input on command line

1) I wrote a script and gave the desired permissions using "chmod 755 scriptname". Now if i edit the script file, why do i need to set the permission again? Didn't i set the permission attribute.. or if i edit the file, does the inode number of file changes? 2) I am running my unix on a server... (1 Reply)
Discussion started by: animesharma
1 Replies

6. Shell Programming and Scripting

Need script to take input from file, match on it in file 2 and input data

All, I am trying to figure out a script to run in windows that will allow me to match on First column in file1 to 8th Column in File2 then Insert file1 column2 to file2 column4 then create a new file. File1: 12345 Sam 12346 Bob 12347 Bill File2:... (1 Reply)
Discussion started by: darkoth
1 Replies

7. Shell Programming and Scripting

Write a new file from 2 files as input to the script

Hi- I am hoping someone can give me some pointers to get me started. I have a file which contains some dn's .e.g file 1 cn=bob,cn=user,dc=com cn=kev,cn=user,dc=com cn=john,cn=user,dc=com I have a second file e.g. file.template which looks something like :- dn: <dn> objectclass:... (5 Replies)
Discussion started by: sniper57
5 Replies

8. Shell Programming and Scripting

Reading specific contents from 1 input files and appending it to another input file

Hi guys, I am new to AWK and unix scripting. Please see below my problem and let me know if anyone you can help. I have 2 input files (example given below) Input file 2 is a standard file (it will not change) and we have to get the name (second column after comma) from it and append it... (5 Replies)
Discussion started by: sksahu
5 Replies

9. Shell Programming and Scripting

a remove script taken in input a file which contain a list of directories

Hi, I'm looking to delete some files from directories. I've just put in a file the location of these files. e.g: in file supprs.txt there is: /usr/host/t1.txt /etc/dev/u1.java /home/new/files/view.c Is it possible to take this file "supprs.txt" as a parameter in a shell command ? (2 Replies)
Discussion started by: yeclota
2 Replies

10. Shell Programming and Scripting

File path with space as external input to the program

Hello I am getting error when the file (Folder or Application) path having space is given as external input to the shell program. It works fine for the files which has no spaces in the file name Thans, (5 Replies)
Discussion started by: keshav.murthy@r
5 Replies

Featured Tech Videos