Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Unix操作系统中仅移动目录而不移动文件_Unix - Fatal编程技术网

在Unix操作系统中仅移动目录而不移动文件

在Unix操作系统中仅移动目录而不移动文件,unix,Unix,我有一个包含许多文件和子目录的目录。要仅移动子目录,我刚刚了解到您可以使用: ls-d BASEDIR/*/|xargs-n1-I%mv%TARGETDIR/为什么不使用find find . -maxdepth 1 -type d -exec mv '{}' /tmp \; -maxdepth 1确保查找不会深入到当前目录 -type d告诉find仅查找目录 -exec使用{} 在我看来,这是一个更干净的解决方案,当文件中有空白或制表符时,它也比使用xargs工作得更好 可能的解决方案:

我有一个包含许多文件和子目录的目录。要仅移动子目录,我刚刚了解到您可以使用:

ls-d BASEDIR/*/|xargs-n1-I%mv%TARGETDIR/
为什么不使用find

find . -maxdepth 1 -type d -exec mv '{}' /tmp \;
-maxdepth 1
确保查找不会深入到当前目录
-type d
告诉find仅查找目录
-exec
使用
{}

在我看来,这是一个更干净的解决方案,当文件中有空白或制表符时,它也比使用xargs工作得更好

可能的解决方案:

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

使用如下文件结构:

/dir2move2
/dir
  /subdir1
  /subdir2
  index.js
mv ./*Old*/ /data/
要仅移动子目录而不移动文件,可以执行以下操作:

mv./dir/*/./dir2move2

我使用以下命令:

$ mv ./*/ DirToMoveTo
例如: 假设我想将名称中带有“Old”的所有目录移动到/data上名为“Old_Dirs”的文件夹中。 该命令如下所示:

/dir2move2
/dir
  /subdir1
  /subdir2
  index.js
mv ./*Old*/ /data/

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

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

谢谢我喜欢你的观点,即不必担心制表符和空白。不过我只想移动目录,所以我会在下面修改你的目录:啊,对不起,我想我有点糊涂了:)
-type d
在这种情况下是你的朋友,然后简单明了