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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: как скопировать в другую папку нужные файлы, сохранив структуру папок  (Прочитано 296 раз)

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

Оффлайн Aleks.Sinjavin

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Как скопировать в другую папку только нужные файлы, при этом структура каталогов, только нужных файлов, должна быть сохранена.

пример:
в каталоге /media/2TB/01/ есть следующие директории dir1, dir2, dir3
в dir1 поддиректории subdir1 и subdir2
в dir2 поддиректории subdir3 и subdir4
в dir3 поддиректории subdir5 и subdir6

но только в subdir2 и subdir3 есть подходящие файлы с расширением например .txt. В других папках другие расширения, ненужные.

файлы с расширением .txt нужно скопировать в /home/aleks/01/, так чтобы существовали только файлы и папки /home/aleks/01/dir1/subdir2/ с вложеными .txt, и /home/aleks/01/dir2/subdir3/ с вложеными .txt

в реальном примере больше вложенных папок и только определенные папки, с вложеными файлами должны быть скопированы.

ТС, как видно по состоянию на 13/02/2020 потерял интерес к созданной им теме (пометка Решено в теме отсутствует, тема оставлена не закрытой, сообщений в теме давно не было). На реплики форумчан реакции со стороны ТС нет. Тема стародавняя (последнее сообщение в топике: 21/01/2019; последнее сообщение от ТС в топике: 21/01/2019). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 13 Февраль 2020, 00:02:58 от zg_nico »

Оффлайн zg_nico

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 3511
  • Nil mortalibus arduum est
    • Просмотр профиля
Aleks.Sinjavin, не уверен что я правильно понял Вашу задачу. Моя интерпретация, если позволите:
1. Найти в каталоге /media/2TB/01/ файлы с расширением txt (поиск регистронезависимый)
2. Все эти файлы скопировать в каталог /home/aleks/01/, воссоздав в каталоге ту же структуру вложенных каталогов, что была в /home/aleks/01/ для каждого копируемого файла
Если это - то что Вам нужно, то вот так это можно завернуть в одну длинную команду:
s=$IFS; IFS=$'\n'; for i in `find /media/2TB/01/ -type f -iname "*.txt" -exec ls {} \; `; do new_dir=`dirname $i | sed "s/\/media\/2TB\/01/\/home\/aleks\/01/"`; mkdir -p "$new_dir"; cp "$i" "$new_dir"; done; IFS=$s
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4261
  • Capture the truth
    • Просмотр профиля
rsync -av --prune-empty-dirs --include '*/' --include '*.[Tt][Xx][Tt]' --exclude '*' '/media/2TB/01/' '/home/aleks/01/'
« Последнее редактирование: 21 Январь 2019, 16:53:56 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн Azure

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

Оффлайн zg_nico

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 3511
  • Nil mortalibus arduum est
    • Просмотр профиля
Azure, каюсь, грешен. Микроскопом гвозди забиваю, покуда на молоток пальцем не покажут
ALiEN175, спасибо за пример!
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

 

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