次のファイル階層を持ちます。
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
@Don_Christ の鋭い観察に基づいて、この回答は編集され、サブシェルが保存されました。
for i in dir/*/snapshot; do
mv "$i"/*/* "$i"/..
done