Removing empty folders using 'find'


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Removing empty folders using 'find'
# 1  
Old 04-17-2008
Removing empty folders using 'find'

Hey there!

I try to use 'find' to remove empty directories like this:
Code:
find . -depth -type d -empty -exec rm -rf {} ';'

It works just fine, but there are some directories i want to exclude.
So i tried to do sth like this:
Code:
find . -depth -type d -empty -exec grep -v "not this one please" -exec rm -rf {} ';'

but this isn't working. Smilie

How can i include the 'grep -v' to achieve this?

Last edited by Yogesh Sawant; 04-21-2008 at 06:34 AM.. Reason: added code tags
# 2  
Old 04-17-2008
Code:
find . -depth -type d -empty -print |
grep -v "not this one please" |
xargs rmdir

If you have newlines or other tricky stuff in your path names, you need to take some additional precautions, but let's assume you don't.

To grep for more than one thing at the same time, egrep is helpful.

Code:
egrep -v 'not this one|or this one|nor this one either|neither this'

# 3  
Old 04-17-2008
Thanks that did the trick. Smilie
Also thank you for the egrep additional tip!
# 4  
Old 04-20-2008
I have to bump this thread, .. expanding the original question.

Let's say I want to search for folders that are empty, but are also declared as empty despite if there are dot-files (.gnome, .kde, etc.). So dot-files are ignored, only visible files are important. So basically what I want to achieve is: search for folders and if NO visible item is in it then print it to the shell.

I don't think find can do this, i rather have the feeling that this is doable with regular expressions, at which I have no clue about tbh. Smilie

Has someone an idea to accomplish this task?

Last edited by deTTo; 04-20-2008 at 09:09 PM..
# 5  
Old 04-21-2008
Maybe it would be better to start a new thread for this question, but anyway, here goes.

1. Search for any directory

2. If directory contains any non-dot files, skip it (= mark for keeping).

3. Otherwise, print it.

Code:
find -type d -print |
while read dir; do
  keep=false
  for file in "$dir"/*; do
    case $file in
      "$dir"/.*) continue;;  # redundant?  see below
      # "$dir"/\*) continue;;  # maybe need this too, depend on globbing settings
      *) keep=true; break;;
    esac
  done
  if ! $keep; then
    echo "$dir"
  fi
done

Maybe radoulov can come up with an elegant one-liner for this; it's not particularly succinct.

This just echoes the directories; if it seems to work for you, you can change the echo to rm -rf

If your shell doesn't expand non-matching wildcards to an empty string, you might need the case which I commented out, too. (Actually maybe the .* case is redundant; wildcards don't expand dotfiles in bash at least.)

Last edited by era; 04-21-2008 at 04:31 AM.. Reason: empty-glob observation
# 6  
Old 04-21-2008
Yeah I had to uncomment the second 'dir-line' and it's working as far as i tested it. Thanks buddy! Smilie I'm pretty amazed by how easy it can(!) be if one is good at bash scripting skills. I have to learn more, but this gave me confidence to get better and better.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to delete some empty folders?

I have an amount of folders and I want to delete only the empty ones. But I have more than 200 empty folders, so I would preffer do not delete one by one... I know it is possible, but I don't know how. I've tried with the size, using 'du' command, and saving the result in a file. After that, I made... (3 Replies)
Discussion started by: saitsug
3 Replies

2. Windows & DOS: Issues & Discussions

Empty folders with SFU

Hi all, i am currently setting my windows XP environment to use with Services for Unix (NFS Client) to mount my unix file system as a network drive. However, though i could mount the unix file directory successful, but the folder is empty (which is not). Why is this so? i have imported my unix... (6 Replies)
Discussion started by: lchunleo
6 Replies

3. Shell Programming and Scripting

Deleting empty folders

Hey, I need help with writing a shell script that deletes empty folders..anyone? :) Thank you! (5 Replies)
Discussion started by: putukas
5 Replies

4. UNIX for Dummies Questions & Answers

Removing empty folders

Hello, I have a folder that contains all my music. Recently, I started using a different media player, and I let it manage my music folder. It has sorted all my music neatly in folders by artist and album. However, all the old folders that the songs used to be in are still there, yet they are... (2 Replies)
Discussion started by: emveedee
2 Replies

5. Shell Programming and Scripting

Find empty folders

In current folder, there are many subfolders, subfolder's subfolders... under it. How can I find out the empty folders with no files in it. I only need the top folder list. For example, I have folders like below: a/b/c a/b/x/x.txt a/s a/s/y I need get the folder a/s, but not... (6 Replies)
Discussion started by: rdcwayx
6 Replies

6. Shell Programming and Scripting

removing empty tags

Hi, I have a file as shown below. <crown:clinicalData> <crown:alb date="2008-07-10" lowValue="3.50" method="BCG" value="3.50"/> <crown:cre date="2008-07-10" value="9.5"></crown:cre> <crown:ktvHdAd> </crown:ktvHdAd> <crown:ktvPdAd> </crown:ktvPdAd> ... (1 Reply)
Discussion started by: vijayhai
1 Replies

7. UNIX for Dummies Questions & Answers

Removing empty folders using the "find" command

Hi I'm trying to remove empty sub-folders from 1 main folder using the find method, but the "- empty" parameter isn't recognized by my Unix version. Any idea how to implement such thing? Thanks. (3 Replies)
Discussion started by: biot
3 Replies

8. UNIX for Dummies Questions & Answers

how to find empty folders without using -empty

hi all: my solaris FIND does not support find myFolder -type d -empty how can i find the empty folders? thanks! (7 Replies)
Discussion started by: lasse
7 Replies

9. UNIX for Dummies Questions & Answers

zip nesting empty folders

I'm using the following command to zip a project file, but when it finishes, the resulting zip file contains all the directories above the file I wanted zipped, myapp.app, each one empty until you get to the actual app. zip -r myapp.app.zip ... (0 Replies)
Discussion started by: groundlevel
0 Replies

10. UNIX for Dummies Questions & Answers

Removing old folders

All Please help me to remove old files. For example /usr/exp/ - inside this Apr 02 - dir02 Apr 03 - dir03 Apr 04 - dir04 Apr 05 - dir05 Apr 06 - dir06 Apr 07 - dir07 Apr 03 - file03 I want to delete all the folders 2 days before created.Not the fil03 even though it is 2 days old. ... (1 Reply)
Discussion started by: DeepakXavier
1 Replies
Login or Register to Ask a Question