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

Alo*_*ren 3 unix

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

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

Tho*_*mas 5

为什么不使用查找?

find . -maxdepth 1 -type d -exec mv '{}' /tmp \;
Run Code Online (Sandbox Code Playgroud)

-maxdepth 1确保find不会比当前目录更深入地 -type d告诉find仅查找目录 -exec执行命令,并使用由find引用的find结果{}

我认为这是一种更干净的解决方案,并且当文件中包含空格或制表符时,它比使用xargs更好。


小智 5

我使用以下内容:

$ mv ./*/ DirToMoveTo
Run Code Online (Sandbox Code Playgroud)

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

mv ./*Old*/ /data/
Run Code Online (Sandbox Code Playgroud)