我想移动.
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
设置。