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-ntomvstops 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..anythingfiles. – 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 -Qdoesn't output in a format that is suitable to use withevalor 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 dotgloband 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-fto it to overwrite – Luka Jul 20 '18 at 11:22/bin/mv -finstead ofmv -f. Becausemvis by default aliased to-ion some distributions. And that's why it appears it doesn't work. Add thisalias cp='cp'to~/.bash_aliasesto 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