GNU bug report logs -
#6104
[Expert] Bug in mv?
Previous Next
Full log
View this message in rfc822 format
Note: I saw this on bug-coreutils, haven't read the whole thread.
Gene Heskett writes:
>
> On Tuesday 04 May 2010, Jo=E3o Victor Martins wrote:
> >On Tue, May 04, 2010 at 10:36:19PM -0400, Gene Heskett wrote:
> >> I tried to "mv amanda* /home/amanda/*" as root and which
> >> which I recall I have done successfully several times before.
> >
> >The shell expand * _before_ passing the args to mv. So mv saw all
> >files starting with 'amanda' and all files (besides . hidden ones) i=
> n
> >/home/amanda/ as arg. It then picked the last one listed (probably
> >/home/amanda/tmp/) as destination.
> >
> I had two files whose names started with amanda in that directory. I
> would
> have assumed it would expand the src pattern of "amanda*" to match on
> ly those
It's not the first * that's the problem. The second one (/home/amanda/*)
expands to a list of everything that was in /home/amanda (except dotfiles)
and that happens before mv is executed. There are several possibilities of
what that command can do:
1. /home/amanda contained no files before the move. In that case the
/home/amanda/* is passed through literally as the final argument to mv, so mv
sees 3 arguments (your 2 files, then "/home/amanda/*" which doesn't exist)
and it fails, because with more than 2 arguments, the last argument must be
an existing directory.
2. /home/amanda contained some stuff, and the last item in the expanded list
(alphabetically sorted) was not a directory. Same result as #1.
3. /home/amanda contained some stuff, and the last item in the expanded list
happened to be a directory (say you have a directory called
/home/amanda/zzzzzzzz): then the list expands, the final argument to mv is an
existing directory, so you have success! Your 2 files, plus everything in
/home/amanda, gets moved into the zzzzzzzz directory. If this isn't what you
meant, you did something wrong. mv just did what it was told.
4. Like #1, but with a nomatch shell option enabled, you get a "No match"
error message.
Your career as a unix wizard isn't complete until you've done something like
#3 *on purpose*.
--
Alan Curry
This bug report was last modified 13 years and 327 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.