2

I tried to execute delete as per many previous discussions occurred find & delete

however my attempts lead to different experience.

find . -type d -name "koko" -exec rm -rf {} \; 

deletes the folder named koko but give me false alarm

find: ./koko: No such file or directory 

what is supposively going wrong at my terminal.

I am using tcsh , and -delete switch with find doesn't work well.

here is the snapshot of workout done

0

2 Answers 2

1

If you use the -prune option as suggested in this answer, the error message doesn't occur.

Quoting from the above answer,

Use -prune on the directories that you're going to delete anyway to tell find not to bother trying to find files in them.

Testing

mkdir koko cd koko touch file{1,2} cd .. find . -type d -name "koko" -prune -exec rm -rf {} \; 

After I execute the above find command, I get the prompt without any error. However, if I do not use the -prune option, I get the same error as you mention.

2
  • it worked fine as you suggest. find definition made it more clear Commented Dec 2, 2014 at 16:16
  • @JigarGandhi, glad it resolved your issue. :) Commented Dec 2, 2014 at 16:25
1

The problem is that find has found a directory, it matches your selection and then the command is executed. However, find wants to do what comes naturally, and that's recursing through a directory tree, but the directory it's just found has disappeared! Hence the error message.

You can work around this by supplying the --depth option, which means process each directory's contents before the directory itself. The manpage also mentions that the -delete option also implies this option, which is for the above reason.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.