我搜索了各种论坛,讨论了不同的问题 -
我正在尝试将所有文件(包括子文件夹中的文件)从一个文件夹移动到另一个文件夹 - 仅移动文件而不是文件夹。
此命令适用于目录
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' -- {} +
在我的 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