У меня есть куча файлов, которые содержат в своем пути дублированную папку (в следующей 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 ответ1

0

Я решил решить это так:

for iteration_path in ${1}/*; do
  if [[ ! -z $iteration_path ]]; then
    mv "${iteration_path}"/bar/* "${iteration_path}";
    rmdir "${iteration_path}"/bar;
  fi
done

Если кто-то может расширить предложения AFH по расширению параметров, мне было бы интересно, если это более элегантное решение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .