在Unix OS中仅移动目录而不移动文件

时间:2014-10-25 14:49:25

标签: unix

我有一个包含许多文件和子目录的目录。要仅移动子目录,我才知道你可以使用:

ls -d BASEDIR/*/ | xargs -n1 -I% mv % TARGETDIR/

5 个答案:

答案 0 :(得分:4)

为什么不使用find?

find . -maxdepth 1 -type d -exec mv '{}' /tmp \;

-maxdepth 1确保查找不会比当前目录更深入 -type d告诉find只查找目录 -exec执行一个命令,其中包含{}

引用的查找结果

在我看来,一个更干净的解决方案,当你有包含空格或标签的文件时,它也可以更好地使用xargs。

答案 1 :(得分:2)

使用如下文件结构:

/dir2move2
/dir
  /subdir1
  /subdir2
  index.js

仅移动子目录而不移动您可以执行的文件:

mv ./dir/*/ ./dir2move2

答案 2 :(得分:1)

可能的解决方案:

find BASEDIR/ -maxdepth 1 -mindepth 1 -type d -exec mv '{}' TARGETDIR \;

答案 3 :(得分:1)

我使用以下内容: $ mv ./*/ DirToMoveTo

例如: 假设我想将名称中带有“Old”的所有目录移动到/ data上名为“Old_Dirs”的文件夹中。 命令看起来像这样: mv ./ / / data /

答案 4 :(得分:0)

你可以简单地使用相同的命令来移动文件,但在子目录的名称后加一个斜杠

    sudo mv */ path/to/destination 
    sudo mv subdir/ path/to/subdirectory