用于移动不以“.”开头的目录的命令

用于移动不以“.”开头的目录的命令

我想移动.bash 中不以 开头的目录中的所有子目录。

例如,给定以下目录结构:

subdir1/
subdir2/
.idea/
.venv/

该命令应该仅移动subdir1/subdir2/某个目标目的地。

答案1

您可以简单地使用:

mv */ ../target_dir/

如果您没有显式设置任何 bash 选项来更改默认行为,则该模式*/不会匹配以.in bash 开头的文件夹(除非dotglob已设置 shell 选项)。有关更多信息,请参阅GLOBIGNORE使用 man 文件:man bash

答案2

find

find . ! -name '.*' -type d -exec mv -- {} ../target_dir \;

如果您只想要当前目录:

find . -maxdepth 1 ! -name '.*' -type d -exec mv -- {} ../target_dir \;

您无法可靠地期望如何dotglob设置。

相关内容