パス内に重複したフォルダー (次の例 ) を含むファイルがたくさんあります。このディレクトリを削除し、含まれるすべてのコンテンツを親に移動したいと思います。検索と置換をメタファーとして使用するには、パス内のを にbar
置き換えます。/foo/
/
初期状態:
foo/bar/some_file.txt
foo/another_file.txt
quux/bar/yet_another_file.txt
ゴール:
foo/some_file.txt
foo/another_file.txt
quux/yet_another_file.txt
私はこれを bash で解決することを好みますが、依存関係がなく Linux で動作するソリューションであれば何でも構いません。
このスレッドに偶然出会った人にとって役立つかもしれないので、Windows用の既存の回答robocopy を使用します。
答え1
私は最終的に次のように解決しました:
for iteration_path in ${1}/*; do
if [[ ! -z $iteration_path ]]; then
mv "${iteration_path}"/bar/* "${iteration_path}";
rmdir "${iteration_path}"/bar;
fi
done
AFHの提案についてさらに詳しく説明できる方がいらっしゃいましたらパラメータ拡張それがよりエレガントな解決策であるかどうか興味があります。