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

时间:2016-01-06 13:22:28

标签: unix directory find command subdirectory

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

我希望实现的目标是当我.转换它时:

.
./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

4 个答案:

答案 0 :(得分:1)

也许这会有所帮助:

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

答案 1 :(得分:1)

试试这个

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

您可能会收到此消息

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

但不要担心这是因为'。'正在尝试移动此目录。

答案 2 :(得分:1)

我想你想要:

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

答案 3 :(得分:1)

由于您希望取消嵌套目录,因此您需要先深入了解它们,否则可能会在较浅的目录中使用较深的目录。

使用与您的尝试非常相似的语法,以下似乎可以执行所需的操作。

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