Перемещение подкаталога в новый родительский каталог, где новое имя каталога увеличивается на 1

Я пытаюсь переместить подкаталог из одного родительского каталога в другой для сотен экземпляров, одновременно изменяя имя подкаталога во время перемещения. Мои каталоги представляют собой набор чисел:

1000, 1001, 1002, 1003, …, 1998, 1999

В каждом каталоге есть подпапка с именем «old» (например, 1000 / old), которую я хочу переместить в следующий инкрементный каталог (и переименовать подпапку).

Например, я хочу переместить «1000 / old» в «1001 / new».

Я пробовал использовать xargs, для чего я новичок, поэтому я не уверен, что пойду в правильном направлении. Я думаю, что я хочу что-то вроде:

find 1* -name 'old' | xargs -i -t mv {} <dir+1>/new 

Я просто не уверен, как реализовать incrementing ( dir+1 бит).

Я также попытался реализовать модификацию принятого ответа на этот вопрос, но моя модификация также не работает должным образом (я использую ls для проверки кода до того, как я действительно начну перемещать / переименовывать каталоги):

 #!/bin/bash for x in 1*; do ls -d "$x/old" "${x}$i/new" ((++i)) done 

Проблема с вышеизложенным заключается в том, что следующий каталог становится 10001, 10002 и т. Д. Вместо 1001, 1002.

Любые предложения очень ценятся.

One Solution collect form web for “Перемещение подкаталога в новый родительский каталог, где новое имя каталога увеличивается на 1”

Оболочки обрабатывают строки, представляющие целые числа в десятичном виде как целые числа. Если у вас есть каталог, имя которого содержит только цифры без начальных нулей, у вас есть номер, и вы можете выполнить арифметику .

 for d in 1*; do mv "$d/old" "$((d+1))/new" done 

Вы можете сделать скрипт более надежным и выполнить только ход, если old подкаталог действительно существует, и при необходимости создать место назначения.

 for d in 1*; do if [ -d "$d/old" ]; then mkdir -p "$((d+1))" mv "$d/old" "$((d+1))/new" fi done 

find здесь не полезен, поскольку вы не рекурсивно перемещаете подкаталоги.

  • Массовое переименование файлов на камкордерах, включая пробелы
  • цитируя проблему, когда трубопровод находит выход в xargs
  • удалять файлы после вставки в tarball
  • find: несколько `-exec` с условиями
  • Передача нескольких аргументов в середине команды с помощью xargs
  • Проблемы с find, xargs и egrep
  • почему не xarss правильно разбирает мой вход?
  • Поиск строки в каталоге. Получить вывод без имени файла.
  • Ускорение команды поиска rm с проверкой путем распараллеливания
  • Какова цель команды xargs -I?
  • Печать состояния файлов, обрабатываемых при использовании find
  • Linux и Unix - лучшая ОС в мире.