How can I move all files and folders from one directory to another via mv command?
7 Answers
zsh:
mv /src/*(D) /dst/
(D)
to include dot-files.

- 544,893
-
1
-
4
-
1I know I accepted the first answer many years ago, and it's stupid for me now to change it. But actually, I've been always using this method. – Luka Jul 20 '18 at 11:23
This works for me in Bash (I think this depends on your shell quite a bit...)
$ mv source/{,.}* /destination/folder/here

- 591
-
4Actually, it shouldn't since in Bash
source/{,.}*
matches dir-entries named./
and../
– poige Oct 10 '12 at 21:48 -
1When I try I get
mv: overwrite 'destination/.'? mv: overwrite 'destination/..'?
, but adding-n
tomv
stops it from trying to overwrite – Putnik Dec 05 '12 at 20:05 -
2@Putnik - that's a good gotcha! what os/distro ? ( I was working on OSX when I was messing around with this...) – Niall Byrne Dec 07 '12 at 03:38
-
1@Niall Byrne - I see the same prompt as Putnik. Using Ubuntu 14.04. – Mark Doliner Dec 23 '14 at 06:16
This works for me in Bash 4.2.46, it moves all files and folders including hidden files and folders to another directory
mv /sourcedir/{,.[^.]}* /destdir/
Notice that .[^.]* means all hidden files except . and ..

- 101
- 1
- 3
-
2
.[^.]*
(or its POSIX equivalent.[!.]*
) also excludes..anything
files. – Stéphane Chazelas Oct 26 '16 at 12:30 -
-
https://unix.stackexchange.com/a/402856/93768 contains the full correct expression. – DJCrashdummy Sep 06 '18 at 18:50
-
-
using an example with the same folder name to avoid contents copying over into a parent directory
mv /mnt/data/home/USERX/folderY/{,.[^.]}* /home/USERX/folderY
– jxramos Oct 10 '23 at 18:37
I'd say it's a bit boring, but really bullet-proof (GNU) way is:
cd /SourceDir && find ./ -maxdepth 1 -mindepth 1 -exec mv -t /Target/Dir {} +
P. S. Now you can possibly see why lots of people do prefer Midnight Commander, though.

- 544,893

- 6,231
If you only want to do a cut and paste-like action there is a simple way that worked for me:
$mv /media/dir_source $HOME/Documents/
It will move the folder named dir_source
located in /media
to the directory $HOME/Documents/

- 9,771
yet another way just for the heck of it (because I love convoluted ways to do things I guess)
cd /source
for f in $(\ls -QA); do eval mv $f /destination/$f; done
the -Q
and the -A
are not POSIX, however the -A
is fairly prevalent, and to not use the -Q
you need to change the IFS (which then means you don't need the eval but need to quote the variable)
IFS="
" && for f in $(ls -A); do mv "$f" /destination/"$f"; done

- 886
- 4
- 7
-
ls -Q
doesn't output in a format that is suitable to use witheval
or even$(...)
. Try after having runtouch '$(reboot)'
for instance (ortouch '$(uname)'
for a milder version). – Stéphane Chazelas Oct 08 '15 at 14:56 -
.htaccess
) – Ben Lessani Oct 05 '12 at 12:53shopt -s dotglob
and then "*" will match hidden files, too. – chutz Oct 05 '12 at 14:52mv: cannot move '/a/js' to '/b/js': Directory not empty
– user1063287 Jun 14 '16 at 01:29-f
to it to overwrite – Luka Jul 20 '18 at 11:22/bin/mv -f
instead ofmv -f
. Becausemv
is by default aliased to-i
on some distributions. And that's why it appears it doesn't work. Add thisalias cp='cp'
to~/.bash_aliases
to fix it. – Luka Nov 26 '18 at 16:19-f
, you should use-r
. But the same applies to alias if it's aliased it won't work properly. – Luka Nov 28 '18 at 19:38