如何将目录中的所有文件和文件夹从子目录移动到父目录?将文件包含在非常深的文件夹目录中。
我希望实现的目标是当我.
转换它时:
.
./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
答案 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