如何在终端中将所有文件从一个文件夹移动到另一个文件夹

如何在终端中将所有文件从一个文件夹移动到另一个文件夹

我搜索了各种论坛,讨论了不同的问题 -

我正在尝试将所有文​​件(包括子文件夹中的文件)从一个文件夹移动到另一个文件夹 - 仅移动文件而不是文件夹。

此命令适用于目录

find ~/Desktop/ -type f -print0 | xargs -0 mv -t ~/Videos

但我尝试过的这个文件夹命令没有

find ~/Desktop/Folder1/ -type f -print0 | xargs -0 mv -t ~/Videos/Folder2

答案1

尝试这个

find /path/to/photos -type f -exec mv -nv -t '/path/to/master' -- {} +

原始问题在此处找到:https://stackoverflow.com/questions/19880246/move-only-files-recursively-from-multiple-directories-into-one-directory-with-mv

在我的 CentOS 虚拟机上测试代码:

mkdir -p dir
mkdir -p dir/subdir1
mkdir -p dir/subdir2
mkdir -p dir/subdir3
mkdir -p dir1
touch dir/subdir1/file11
touch dir/subdir1/file12
touch dir/subdir1/file13
touch dir/subdir1/file14
touch dir/subdir2/file21
touch dir/subdir2/file22
touch dir/subdir2/file23
touch dir/subdir3/file31
touch dir/subdir3/file32
touch dir/subdir3/file33
touch dir/file1
touch dir/file2
touch dir/file3
find dir/ -type f -exec mv -nv -t dir1/ -- {} +

答案2

这有效:

$ ll dir1
total 16
drwxrwxr-x  3 rick rick 4096 Oct  8 21:26 ./
drwxr-xr-x 60 rick rick 4096 Oct  8 21:30 ../
drwxrwxr-x  2 rick rick 4096 Oct  8 21:20 dir2/
-rw-rw-r--  1 rick rick    6 Oct  8 21:19 filea

$ mkdir dir3

$ find dir1/ -type f -print0 | xargs -0 mv -t dir3

$ ll dir3
total 16
drwxrwxr-x  2 rick rick 4096 Oct  8 21:31 ./
drwxr-xr-x 61 rick rick 4096 Oct  8 21:31 ../
-rw-rw-r--  1 rick rick    6 Oct  8 21:19 filea
-rw-rw-r--  1 rick rick    6 Oct  8 21:20 fileb

fileb以前属于dir1/dir2,但现在已dir3与以下文件合并:dir1

为了节省输入时间,您可以将命令放入~/.bashrc文件中的函数中:

function adopt () {
    find "$1"/ -type f -print0 | xargs -0 mv -t "$2"
}

保存后~/.bashrc重新打开终端,您现在可以使用:

cd ~
adopt Desktop/dir1 Videos/dir2

相关内容