У меня есть куча файлов, которые содержат в своем пути дублированную папку (в следующих примерах bar
). Я хотел бы удалить этот каталог и переместить все содержимое contains в родительский каталог. Чтобы использовать поиск и замену в качестве метафоры, я хотел бы заменить /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 по поводурасширение параметра, мне было бы интересно, если бы это было более элегантное решение.