【问题标题】:How do you move all files and folders within a directory to the parent directory?如何将目录中的所有文件和文件夹移动到父目录?
【发布时间】:2016-04-10 14:34:59
【问题描述】:

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

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

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

【问题讨论】:

  • 星号 (*) 对 shell 来说是特殊的。此外,我不会将其作为 maxdepth 的值。由于默认值是'尽可能深,只需删除-maxdepth *。您还要求移动文件,但指定了-type d?
  • 你也没有查找的起始目录。

标签: unix directory find command subdirectory


【解决方案1】:

由于您要取消嵌套目录,因此您需要先对它们进行深度 mv,否则可能会在较浅的目录中 mv'd 更深的目录。

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

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

【讨论】:

  • 我收到错误mv: ./a and ./a are identical 但是我确实让所有子目录跳到父目录。但是,我没有将目录中的任何文件转入父目录。我刚刚使用 mkdirtouch 创建了一个类似于您的示例的目录,但文件包含在 abc 目录中
  • @joshuatvernon 如果您想将所有文件移动到新位置,您只需从 find 命令中删除 -type d。我已经编辑了答案,应该是-mindepth 2 以避免该错误
【解决方案2】:

也许这会有所帮助:

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

【讨论】:

    【解决方案3】:

    试试这个

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

    你可能会收到这条消息

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

    但别担心,这是因为 '.'正在尝试移动此目录。

    【讨论】:

    • 这不是 OP 要求的结果。
    • 这会将当前目录中的所有文件和文件夹上移一个目录。
    【解决方案4】:

    我想你想要:

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

    【讨论】:

    • 我收到错误:mv: illegal option -- t usage: mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory
    • 由于他在他的示例中使用了-t,我假设他的mv 支持该选项...如果您的mv 不使用此xargs 调用:xargs -0 -I{} mv {} ~/Desktop
    猜你喜欢
    • 2016-05-03
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2013-07-02
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    相关资源
    最近更新 更多