Amber Jain's weblog (OLD)

Visit my new weblog at http://amber-jain.blogspot.in/

Recursively search sub-directories in a directory to delete a file with a specific name

leave a comment »

Hello,

@Windows OS users: Sometimes when a malware simply installs itself recursively in all the sub-directories (starting from root i.e. C:) with the same name, you need to delete each file. Manual deletion is not usually possible when there are thousands of malware files. This could prove useful to you.
And yes, use some ‘better’ OS if you can.

On ##unix at irc.freenode.net, someone (justinko) asked a question that goes like:
Que: How to recursively search all sub-directories in a directory to delete a file with a specific name?

Answer: Rather than providing only the answer, I prefer putting the complete IRC log here (mind you, ‘justinko’ and ‘Riviera’ are the nicks of persons involved in this conversation):
justinko how do I delete a file in every sub directory?
justinko im in a directory that has directores, and inside those directories there is one file that needs to be deleted
Riviera with a particular name?
justinko yes
justinko I know the exact file name
Riviera okay
Riviera find directory/ -type f -name 'exact_filename' -exec rm -f -- {} +
justinko is find a command?
Riviera yes
justinko the sub-directories are all named differently
Riviera some finds (actually I only know about GNU find) even have the primary -delete
Riviera yes
Riviera i figured
Riviera The find command I gave you recusively checks all files in the "directory/" hierarchy for files with the name "exact_filename",
Riviera executing the command "rm -f --" with the found pathnames as parameters.
Riviera recursively*
Riviera If you want to learn more about find, read this: http://mywiki.wooledge.org/UsingFind
Riviera note that some of the examples given there are related to the bash-shell.
justinko damn that worked
Riviera I'm glad :)
justinko what is - type f ?
justinko I know rm -f is "force remove"
Riviera restricts the filetype to "ordinary files"
justinko k
justinko what does {} mean?
Riviera so that even if you'd have directories with the same name as the files you wish to remove, would be left alone
Riviera when find starts the command given after the -exec primary
Riviera (which, in this case, was "rm")
Riviera it replaces the {} with the pathnames it found.
Riviera the + says to put many of them
justinko amazing
Riviera with a \; instead of a +, one rm would be started per file
justinko are you a system admin by job?
Riviera but since rm can remove more than one file at a time ... using "+" is more efficient
Riviera no, i'm not :)
Riviera i study humanities ,)
Riviera am sorry, need to leave now, quite late here :)
Riviera nite :)
justinko thank you for the help!
Riviera :)

🙂

Advertisements

Written by Amber Jain

November 12, 2009 at 5:13 AM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: