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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Скрипт, удаление директорий  (Прочитано 1243 раз)

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

Оффлайн RemX

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Скрипт, удаление директорий
« : 25 Октября 2018, 15:46:05 »
Всем привет. Кто может помочь написать скрипт, извлекающий файлы из внутренних директорий данной директорий в
данную директорию и удаляющий эти директории. Таким образом должна остаться одна
директория с файлами из всех своих под-директорий

Например имеем папки: case/case2/case3/document.txt и еще какие нибудь файлы. Нужно что-бы в итоге все файлы были
в главной директории case, а пустые удалены :-\

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Скрипт, удаление директорий
« Ответ #1 : 25 Октября 2018, 16:37:14 »
Как-то так
Код: (bash) [Выделить]
for file in $(find)
do
  mv $file $(basename $file)
done

for dir in $( ls -d -- */ )
do
  rm -r $dir
done

Но что бы быть уверенным что все будет сделано правильно советую сначала команды mv и rm "спрятать" под echo и посмотреть на команды которые будут сформированы прежде чем их исполнить.

т.е. сначала посмотрите что выдаст:
Код: (bash) [Выделить]
for file in $(find)
do
  echo mv $file $(basename $file)
done

for dir in $( ls -d -- */ )
do
  echo rm -r $dir
done

Ну и да - скрипт подразумевает что он запущен из того самого каталога в котором нужно проделать это мероприятие.
« Последнее редактирование: 25 Октября 2018, 16:42:23 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1751
    • Просмотр профиля
Re: Скрипт, удаление директорий
« Ответ #2 : 25 Октября 2018, 16:48:28 »
Sly_tom_cat, давай зачетку, "отлично"!

p.s. не надо делать домашнее задание школьникам, так они ничему не научатся

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт, удаление директорий
« Ответ #3 : 25 Октября 2018, 16:48:36 »
Ну что же Вы? Раз уж помянули
in $(find)
find case -mindepth 2 -type f -exec mv -t case {} +
rmdir --ignore-fail-on-non-empty case/*/
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6754
  • 20% Cooler
    • Просмотр профиля
Re: Скрипт, удаление директорий
« Ответ #4 : 25 Октября 2018, 17:05:21 »
а что насчёт  совпадающих имен файлов в разных каталогах?
🖥 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

Оффлайн RemX

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Скрипт, удаление директорий
« Ответ #5 : 25 Октября 2018, 17:11:45 »
Sly_tom_cat, Удаляет все вместе с файлом, оставляя толкьо главную директорию

Пользователь добавил сообщение 25 Октября 2018, 17:15:54:
ALiEN175, Подразумевается, что такого не будет)

Пользователь добавил сообщение 25 Октября 2018, 17:36:47:
Azure, Файл перетаскивает, но пустые директории не удаляет
« Последнее редактирование: 25 Октября 2018, 17:36:47 от RemX »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Скрипт, удаление директорий
« Ответ #6 : 25 Октября 2018, 19:21:45 »
Sly_tom_cat, Удаляет все вместе с файлом, оставляя толкьо главную директорию
Хм... странно.... у меня ls -d -- */ выдает только каталоги и с-но их вторая часть скрипта и удаляет рекурсивно... Файлы эта команда не выдает и их не должна удалять вторя часть.

Ну собственно я просто первое что в голову пришло набросал что называется на коленке, тупенько в лоб. Без претензий и без гарантий, если что. Просто как пример. Если работает не так как надо - надо включить голову и подправить как надо.
« Последнее редактирование: 25 Октября 2018, 19:24:34 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Скрипт, удаление директорий
« Ответ #7 : 25 Октября 2018, 20:21:51 »
RemX,
Удалить пустые папки:
find -type d -empty -delete

 

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