Re: Learning Bash Questions: the MV command
- From: Paul Howarth <paul@xxxxxxxxxxxx>
- Date: Tue, 28 Feb 2006 20:38:47 +0000
On Tue, 2006-02-28 at 22:01 +0200, Dotan Cohen wrote:
On 2/28/06, Paul Howarth <paul@xxxxxxxxxxxx> wrote:
On Tue, 2006-02-28 at 09:26 +0200, Dotan Cohen wrote:
I am trying to learn as I go with bash on a FC4 install. I need to do
two things that are confounding me:
1) I need to move all the photos from a huge, complex tree to one big
directory. Easy:
$ find . -name "*.jpg" -exec mv '{}' /home/dotancohen/big_directory \;
However, there are a few photos that have duplicate file names in
different directories. In this case, it overwrites. That is bad! I
tried adding the -i flag to prompt me, but it takes the next 'mv' as a
response to the prompt, and the next 'mv' fails. Is there a way to
have it not fail the next mv, yet not overwrite? Or better yet, in the
case of duplicate file names, to append something to the end of the
file name, so that it will not be duplicate? Of course, if _that_ file
name is taken, it should append something else, etc. Is this too
complex for Bash?
find . -name "*.jpg" -exec mv --backup=numbered \
'{}' /home/dotancohen/big_directory \;
2) I will then be left with a huge tree with mostly empty directories.
I need to remove the empty directories, but leave those in place that
do contain files. Is there a way to check if a directory is populated
before 'rm'ing it? If the directory contains another directory that
_is_ empty, then of course they should both be deleted. Er, is this
possible?
find . -depth -mindepth 1 -type d \
-exec rmdir --ignore-fail-on-non-empty '{}' \;
Paul.
Thanks, Paul. Although "man mv" describes ---backup=numbered as doing
what I had described, in this case it overwrites! I just tried it with
the code that you provided (in case I was doing something syntaxly
wrong), however, it did overwrite!
For some reason, instead of giving numbered backups, it overwrites. Is
this a bug?
There's certainly something strange going on there, as it certainly
worked for me when I tested it before posting.
As useful way of trying to debug find commands is to put "echo " in
front of the command you're trying to run, e.g.
find . -name "*.jpg" -exec echo mv --backup=numbered \
'{}' /home/dotancohen/big_directory \;
and that should list of commands that you could try one at a time to see
what's going on.
Paul.
--
fedora-list mailing list
fedora-list@xxxxxxxxxx
To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
- Follow-Ups:
- Re: Learning Bash Questions: the MV command
- From: Dotan Cohen
- Re: Learning Bash Questions: the MV command
- References:
- Learning Bash Questions: the MV command
- From: Dotan Cohen
- Re: Learning Bash Questions: the MV command
- From: Paul Howarth
- Re: Learning Bash Questions: the MV command
- From: Dotan Cohen
- Learning Bash Questions: the MV command
- Prev by Date: Re: ProFTP login horror
- Next by Date: Re: apache ssl
- Previous by thread: Re: Learning Bash Questions: the MV command
- Next by thread: Re: Learning Bash Questions: the MV command
- Index(es):
Relevant Pages
|
|