web-dev-qa-db-ja.com

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

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

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

各スナップショット/サブディレクトリディレクトリからファイルを移動したいのですが、スナップショットの親ディレクトリを1つのコマンドで実行します。それは次のようになります:

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

私はもう試した mv dir/*/snapshot/*/* ../../しかし、宛先部分以降../../は、明らかに機能しない作業ディレクトリを基準にしています。

Bashコマンドで可能ですか(bashスクリプトを1行も記述したことがないため)?

1
sgable

@Don_Christの鋭い観察に基づいて、この回答は編集され、サブシェルが保存されました。

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