Bash 代码片段将目录中的所有文件移动到该目录中

Bash 代码片段将目录中的所有文件移动到该目录中

我有一个目录,里面有很多文件和目录。为了整理它,我要把所有这些文件放到一个目录中,所以我打算这样做:

$ ls | wc -l
123
$ mkdir new_directory
$ mv * ./new_directory

但是这显然行不通,因为它会尝试进入new_directorynew_directory有没有简单的方法可以在一行中完成我想要的操作,而不必复制和粘贴该目录中的所有文件和目录?

答案1

你的

mv * ./新目录
命令实际上会起作用;它只会打印一条警告,提示它无法将该目录移动到自身中。

答案2

一个快速而肮脏的单行代码。

mv `ls -A | grep -v new_directory` ./new_directory

答案3

如果你只是在寻找文件(即不是目录),那么

find . -type f -maxdepth 1 -exec mv {} ./new_directory/ \;

是最可移植的解决方案。为了提高速度,您应该移动 find 和 xargs,并使用 -print0 和 -0,但前提是您有 GNU find 和 xargs。

答案4

关于什么:

cd ..
mv old_dir new_directory
mkdir old_dir
mv new_directory old_dir

换句话说,不要将内容移动到新目录中,而是将该目录放在新目录中。

相关内容