如何将目录中的所有文件和文件夹移动到父目录?

How do you move all files and folders within a directory to the parent directory?

如何将目录中的所有文件和文件夹从其子目录移动到父目录?包括非常深的文件夹目录中的文件。

我想要实现的是当我在 . 时转换为:

.
./aDir
./aDir/bFile
./aDir/cDir
./aDir/cDir/dDir
./aDir/cDir/dDir/eFile

为此:

.
./aDir
./bFile
./cDir
./dDir
./eFile

我假设你使用的是 unix 命令 find 但是我似乎无法让它工作。

这是我尝试过的:

find -mindepth 1 -maxdepth * -print0 | xargs -0 mv -i -t ~/Desktop

也许这有帮助:

for i in $(find .); do cp -r $i .; done

当你在 . 时,它会转换为:

.
./a
./a/b
./a/b/c

为此:

.
./a
./a/b
./a/b/c
./c
./b
./b/c

试试这个

find . -maxdepth 1 -exec mv {} .. \;

您可能会收到此消息

mv: cannot move `.' to `../.': Device or resource busy

不过不用担心,这是因为“.”正在尝试移动此目录。

我想你想要:

find . -mindepth 1 -depth -print0 | xargs -0 mv -i -t ~/Desktop

由于您要查看 un-nest 您的目录,因此您需要先按深度顺序 mv 它们,否则可能会在较浅的目录中对较深的目录进行 mv。

使用与您的尝试非常相似的语法,以下似乎可以满足要求。

find . -mindepth 2 -depth -type d -print0 | xargs -0 -I{} mv {} ~/Desktop

示例:

$ find . -mindepth 1 -depth -type d
./a/b/c2
./a/b/c
./a/b
./a
$ find . -mindepth 2 -depth -type d -print0 | xargs -0 -I{} mv {} .
$ find . -mindepth 1 -depth -type d
./a
./b
./c
./c2