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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Переименование папок при помощи команды Find  (Прочитано 541 раз)

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

Оффлайн Profy

  • Автор темы
  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Здравствуйте, подскажите пожалуйста как переименовать (добавить суффикс к имени, ".dir") ко всем папкам находящиеся в каталоге и во всех его под каталогов, с максимальной глубиной.

Есть структура
Код: (html5) [Выделить]
folder01/
folder01/dir01/
folder01/dir02/
folder02/
folder02/dir01/
folder02/dir02/

После выполнения команды хочу получить результат:
Код: (html5) [Выделить]
folder01.dir/
folder01.dir/dir01.dir/
folder01.dir/dir02.dir/
folder02.dir/
folder02.dir/dir01.dir/
folder02.dir/dir02.dir/

Не понимаю почему не срабатывает команда:
Код: (bash) [Выделить]
find * -type d -exec mv {} {}.dir \;
В результате получаю переименование папок только верхнего уровня folder0N.dir, вложенные папки остаются без изменений, при этом выдается ошибка, что имя уже существует... чтоб избежать ошибок выполнения дополнил команду.
Код: (bash) [Выделить]
find * -type d -maxdepth 0 -exec mv {} {}.dir \;
Кто-нибудь может подсказать как дополнить команду чтоб получить описанный выше результат.
« Последнее редактирование: 09 Ноября 2020, 23:53:19 от Azure »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Попробуйте добавить парамметр -depth
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн valrust

  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Если нужно в глубину на 4 уровня

for level in 4 3 2 1
do
find ./ -maxdepth $level -mindepth $level -type d -exec mv '{}' '{}'.dir \;
done

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6733
  • 20% Cooler
    • Просмотр профиля
если много уровней, чтобы не перечислять:
for level in {4..1}
...
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

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