複数のディレクトリ内の複数のファイルをソース相手先に移動する

複数のディレクトリ内の複数のファイルをソース相手先に移動する

次のファイル階層があります。

dir
├── dirA
│   └── snapshot
│       └── subdir1
│           └── file1
└── dirB
    └── snapshot
        └── subdir2
            └── file2

単一のコマンドで、各スナップショット/サブディレクトリからスナップショットの親ディレクトリにファイルを移動したいと思います。それは次のとおりです。

dir
├── dirA
│   └── file1
│   └── snapshot
│       └── subdir1
└── dirB
    └── file2
    └── snapshot
        └── subdir2

mv dir/*/snapshot/*/* ../../私はこれを試しましたが、ターゲット../../部分が作業ディレクトリに相対的であるため、明らかに動作しません。

bashコマンドを使用できますか(私はbashスクリプトを1行書いたことがないので)?

答え1

@Don_Christの敏感な観察に基づいて、この答えはサブシェルを保存するように編集されました。

for i in dir/*/snapshot; do
     mv "$i"/*/* "$i"/..
done

関連情報