「.」で始まらないディレクトリを移動するコマンドです。

「.」で始まらないディレクトリを移動するコマンドです。

.bashで始まらないディレクトリのすべてのサブディレクトリを移動したいと思います。

たとえば、次のようなディレクトリ構造があるとします。

subdir1/
subdir2/
.idea/
.venv/

このコマンドは特定の宛先subdir1/にのみ移動する必要があります。subdir2/

答え1

以下を簡単に使用できます。

mv */ ../target_dir/

デフォルトの動作を変更するために bash オプションを明示的に設定しないと、パターンは bash で始まるフォルダーと一致しませ*/ん (シェルオプションが設定されていない場合).詳しくは、manファイルの使用:を参照してください。.dotglobGLOBIGNOREman bash

答え2

そしてfind

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

現在のディレクトリだけが必要な場合:

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

dotglob設定方法が安定して期待できません。

関連情報