Remove contents of directory, but not directory


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove contents of directory, but not directory
# 1  
Old 12-03-2005
Remove contents of directory, but not directory

What's the best way to delete everything in a directory, but not the directory itself, without using shell wildcards?
# 2  
Old 12-03-2005
Quote:
Originally Posted by pdc
What's the best way to delete everything in a directory, but not the directory itself, without using shell wildcards?
Why can't you use shell wildcards?

Carl
# 3  
Old 12-03-2005
Looks like homework to me, but here's a thought: why dont you look up the man pages of ls and for loop in sh/ksh.
# 4  
Old 12-03-2005
It's not homework. I'm looking to know mostly out of curiosity, but you could argue that using wildcards is bad anyway. If there's a million files in the directory, that's a million rm processes (obviously not all simultaneous, but still). It's not bullet-proof:

mercury-2:~:0 mkdir foo
mercury-2:~:0 touch foo/.bar
mercury-2:~:0 rm -rf /foo/*
zsh: sure you want to delete all the files in /foo [yn]? y
zsh: no matches found: /foo/*
mercury-2:~:1


On top of that, it's not easy to use from, say, an exec() call. You need the infrastructure of a shell.

So my question stands.
# 5  
Old 12-03-2005
find . -type f -exec rm {} \; -print
# 6  
Old 12-03-2005
Except that won't remove any subdirectories. Removing the "-type f" and specifying "rm -r" fixes this issue... but you'll still hit an error when find attempts to remove the "." directory. Incidentally, "find . -delete" is probably a nicer way of coding this.

Anyone else got suggestions? It seems like the kind of thing their should be a command, or flag to rm, for: a simple way to empty a directory.

Last edited by pdc; 12-03-2005 at 10:08 PM..
# 7  
Old 12-04-2005
Quote:
Originally Posted by pdc
It's not homework. I'm looking to know mostly out of curiosity, but you could argue that using wildcards is bad anyway. If there's a million files in the directory, that's a million rm processes (obviously not all simultaneous, but still). It's not bullet-proof:

/*skipped the code*./

On top of that, it's not easy to use from, say, an exec() call. You need the infrastructure of a shell.

So my question stands.
I dont think you have that right.. a million processes is not a million rm processes. Its all those million files as arguments to one rm process. Now that might fail due to too many arguments (any command can handle only a finite number).
I will give you your second argument about not being easy to use from an exec() call.

Why don't you use a slightly modified form of the find command that ppierald gave:
Code:
find . -exec rm -rf {} \;

That, by the way, would be a million rm processes (one for each file/directory that the find command would output).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Zipping contents without the actual directory

Hi , I want to zip files present in the directories listed under a parent directory without zipping the directory itself my parent directory path is /informatica/DGDMN/PowerCenter1011/server/infa_shared/SrcFiles/OTE/Final_Directory I have the below directories named as 1,2,3,4,5 listed... (9 Replies)
Discussion started by: paul1234
9 Replies

2. AIX

Restore directory and contents from tape

Hi, I have taken a backup of a directory on my tape in using below command cd /backup find * -print|backup -ivf '/dev/rmt0' '-U' |tee -a /syslogs/backup.log and output appear in below format. a 0 rman-before-08032014 a 58403323904... (2 Replies)
Discussion started by: m_raheelahmed
2 Replies

3. UNIX for Dummies Questions & Answers

What option will use for deleting directory with all its contents?

Hi How to completely delete directory with all it contents I try to use rmdir -r but it give error Thanks ---------- Post updated at 03:10 AM ---------- Previous update was at 02:52 AM ---------- Hi all I got the solution for my thread i use mkdir with the option -p Thanks (1 Reply)
Discussion started by: Tauatioti
1 Replies

4. Shell Programming and Scripting

Script that displays contents of a directory

Hello all! I am writing a script that takes in a directory name as input and if the directory exists, it shows the files inside the directory here is what I have so far (incomplete) (mostly like pseudocode) #/bin/sh echo Please enter the name of a directory read dir grep $dir... (2 Replies)
Discussion started by: subway69
2 Replies

5. Shell Programming and Scripting

Create a list of directory contents

Well I did a search and didn't anything for my specific case. I got a directory with a bunch of text file. All of them have the following pattern on the filename "ABCD_<As of Date>.txt" Example: ABCD_20110301.txt ABCD_20110302.txt ABCD_20110303.txt All I want to accomplish is a Korn... (3 Replies)
Discussion started by: Shark Tek
3 Replies

6. Solaris

Directory should not be deleted, But the contents can be

Hi Guys, I have an user's home directory set to /home/A And A contains the following directories B & C Is there some way in solaris by which i can prevent the directories B and C from getting deleted by the user but the contents of the directories B & C can be deleted ? Also i have... (2 Replies)
Discussion started by: localhost
2 Replies

7. UNIX for Dummies Questions & Answers

Best way to list a directory's contents?

Hey guys! I'm so glad I found this site, I've had so many questions and have been left alone for roughly a year scanning man pages but It's just not quite cutting it for some things. So, I often like to list directories when browsing around my local machine, a friend's machine, or my web... (6 Replies)
Discussion started by: bbilheimer
6 Replies

8. UNIX for Dummies Questions & Answers

list contents of directory

I want to list the contents of a directory, but I do not want to use the ls, is there another way?? (3 Replies)
Discussion started by: carl_vieyra
3 Replies

9. UNIX for Dummies Questions & Answers

Message trying to list contents of directory

I'm getting this return whenever I try to do anything on a directory root# ls -al /directory ls: .: Value too large to be stored in data type. total 0 I can change directory down two levels but can not list contents of the root of this directory. ANy one seen this? (1 Reply)
Discussion started by: sallender
1 Replies

10. UNIX for Dummies Questions & Answers

Unable to view contents of a directory

Hi, first post here be gentle. Very new to Unix. Using HP-UX 10.20 I CD into a remote directory on one machine $ cd /net/remote hostname yet when I do an ll in this directory none of the contents appear. It just is empty. when I do the same command from another machine, $ cd... (13 Replies)
Discussion started by: maddave
13 Replies
Login or Register to Ask a Question