Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Собрать файлы в один каталог, переименовав одинаковые имена  (Прочитано 1595 раз)

0 Пользователей и 1 Гость просматривают эту тему.

adawdp

  • Автор темы
  • Гость
—Здр.Все!
—Подробно я описал проблему здесь https://forum.ubuntu.ru/index.php?topic=216134.msg1662528#msg1662528 , но там не получил ответа.
—Задача собрать файлы в одну директорию из директории с поддериекториями при этом файлы с одинаковыми именами должны быль переименованы. Можно чтобы все файлы были переименованы лишь бы не были удалены файлы с одинаковыми именами.
—Из найденного подошло бы вот это, find /path -type f -exec mv {} /path2 \; но удаляет файлы с одинковыми именами.
—Вот так хорошо дополняет, for i in `find ./ -type f`;do  mv $i $(echo `dirname $i`/`date +%F`+`basename $i`);done но не знаю как сделать, чтобы пронумеровало положим все файлы.
—Вот здесь нумерует(переименовывает), i= ; ls | while read; do mv "$REPLY" $((++i))".${REPLY//*.}"; doneно не рекурсивно, только в одной директории в поддерикториях не работает.
—Попытался по-мичурински ;D соединить for i in `find ./ -type f`;do mv "$REPLY" $((++i))".${REPLY//*.}"; done не хочет работать.
—Что не так в последней строке как сделать чтобы переименовывало файлы в директории и поддерикториях?

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Код: Bash
  1. find "$SRC_DIR" -type f -exec bash -c 'mv -i {} "$DST_DIR/$RANDOM.$(basename {})"' \;

По вкусу
Код: Bash
  1. ... -exec bash -c '...' \;
можно заменить на
Код: Bash
  1. ... | while read FILE ; do ... "$FILE" ... ; done
« Последнее редактирование: 12 Март 2013, 20:07:57 от ArcFi »

adawdp

  • Автор темы
  • Гость
—Спасибо большое! Ваш ответ помог мне решить ставшую передо мной задачу! (12.Березень.2013 18-15 Україна Луганськ)

adawdp

  • Автор темы
  • Гость
—Здр Все!
—Вот тоже неплохое решение, готовый сразу к работе рецепт в архиве:

_http://www.cyberforum.ru/shell/thread806909.html#post4253190

• в архиве есть файлик инфо, его нужно внимательно посмотреть;
• папка s — это папка где находятся всё что нужно переименовать;
• папка d — это папка с результатами переименования;
• папка s_save — это папка где на всякий случай сохранено то, что будет переименовываться.
—Команда которая вводится должна выглядеть ./renfiles.sh s d обратите внимание на «s d»!
—На базе этого скрипта, можно делать другие косметически что-то подправив для своих нужд.


 

Страница сгенерирована за 0.101 секунд. Запросов: 24.