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


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

Автор Тема: Действие однократного перемещения\копирования из множества папок в одну [Решено]  (Прочитано 4139 раз)

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

Оффлайн Sinus9x

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
Столкнулся с проблемой. Мне нужно из большого количества папок (больше 2000) переместить файлы из этих папок в одну, но открывать каждую по отдельности уйдет слишком много времени. Как это сделать сразу с помощью одной операции?
« Последнее редактирование: 05 Ноября 2010, 16:46:57 от Sinus9x »
...и даже это запорнушили.

Оффлайн 𝓝𝓲𝓻𝓭

  • Участник
  • *
  • Сообщений: 217
    • Просмотр профиля
На ум приходит только создание скрипта с обходом каждой папки и cp fail ~/dir
Больше всего глупостей в течение дня совершает человек, который рано встаёт и поздно ложится.

Оффлайн Sinus9x

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
Объясните подробнее, пожалуйста.
Вообще мне это нужно для AptonCD. Программа туповата, посколько при указании пути к папке, считывает только те файлы, которые лежат непосредственно в этой папке, а подпапки не просматривает.
Вот у меня папка Main, в кот. есть папки liba, libb, libc ... libz, в каждой из этих папок еще по сотне папок с deb-пакетами внутри. Так вот все эти deb-пакеты мне нужно переместить в папку Main.
...и даже это запорнушили.

Оффлайн 𝓝𝓲𝓻𝓭

  • Участник
  • *
  • Сообщений: 217
    • Просмотр профиля
можно в терменале что то навроде
ls *.deb | cp ~/home/main
Пользователь решил продолжить мысль 05 Ноября 2010, 15:17:14:
поправка ls -R
« Последнее редактирование: 05 Ноября 2010, 15:17:14 от Nird »
Больше всего глупостей в течение дня совершает человек, который рано встаёт и поздно ложится.

Оффлайн Sinus9x

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
Не работает.
ls: невозможно получить доступ к *.deb: Нет такого файла или каталога
cp: после `/home/sinus/main' пропущен операнд, задающий целевой файл
Попробуйте `cp --help' для получения более подробного описания.
...и даже это запорнушили.

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
Не работает.
ls: невозможно получить доступ к *.deb: Нет такого файла или каталога
cp: после `/home/sinus/main' пропущен операнд, задающий целевой файл
Попробуйте `cp --help' для получения более подробного описания.

Ну, вобще-то надо было подправить под себя. Хотя предложенная тебе команда не совсем корректна.
Правильнее будет как-то так
find /path -type f -exec mv {} /path2 \;
/path замени на путь где твои файлы надо собрать а /path2 - куда переместить.
Ubuntu, Gentoo, RHEL, AIX

Оффлайн Sinus9x

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
Итак:
sinus@sinus:~/Рабочий стол$ find /main -type f -exec mv {} /123 \
>
find: отсутствует аргумент у `-exec'

На рабочем столе в папке main другие подпапки с пакетами внутри каждой из них, а 123 - это я создал для перемещения.
...и даже это запорнушили.

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
а точку с запятой в конце кто ставить будет? смотри на мою команду внимательней
Upd.
И кстати, если main и 123 на рабочем столе, что это за пути типа /main и /123???
Ubuntu, Gentoo, RHEL, AIX

Оффлайн Sinus9x

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
А. Черт. Не удалось.
Сначала я написал
find /home/sinus/Рабочий\ стол/main -type f -exec mv {} /123 \;

Он понаписал, что отказано в доступе, но потом я понял, что не то написал и исправил на:

find /home/sinus/Рабочий\ стол/main -type f -exec mv {} /home/sinus/Рабочий\ стол/123 \;

Ничего не произошло.
И со сьюдо тоже пробовал - никакого результата. Ничего не переместилось.
« Последнее редактирование: 05 Ноября 2010, 15:54:16 от Sinus9x »
...и даже это запорнушили.

Оффлайн 𝓝𝓲𝓻𝓭

  • Участник
  • *
  • Сообщений: 217
    • Просмотр профиля
а find рекурсивно директории обходит?
Больше всего глупостей в течение дня совершает человек, который рано встаёт и поздно ложится.

Оффлайн Sinus9x

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
...и даже это запорнушили.

Оффлайн levine

  • Активист
  • *
  • Сообщений: 256
    • Просмотр профиля
А. Черт. Не удалось.
Сначала я написал
find /home/sinus/Рабочий\ стол/main -type f -exec mv {} /123 \;

Он понаписал, что отказано в доступе, но потом я понял, что не то написал и исправил на:

find /home/sinus/Рабочий\ стол/main -type f -exec mv {} /home/sinus/Рабочий\ стол/123 \;

Ничего не произошло.
И со сьюдо тоже пробовал - никакого результата. Ничего не переместилось.

У меня все получилось, даже из нескольких разных каталогов сразу и рекурсивно. И я еще mv на cp заменил, а то он пытается удалить исходные файлы, что совершенно понятно. Попробуй обойтись без "Рабочего стола", с ним вечно что-то не так. Экранируешь, экранируешь, потом оказывается, что он все-таки "Desktop".

Оффлайн dieselist

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • diesel.pp.ua
А. Черт. Не удалось.
Сначала я написал
find /home/sinus/Рабочий\ стол/main -type f -exec mv {} /123 \;
...

Начнем с того, что тебе не обязательно использовать абсолютные пути.
Ты можешь сделать сначала
cd /home/sinus/Рабочий\ стол/
потом
find ./main -type f -exec mv -v {} ./123/ \;

Для mv, как в моем примере, добавь ключ -v - так ты получишь больше информации на выводе.
Для того чтоб посмотреть правильные ли оно файлы находит сделай что-то такое
find ./main -type f -exec echo {} \;

а find рекурсивно директории обходит?

А запустить, а посмотреть, а подумать? Конечно же рекурсивно.
Ubuntu, Gentoo, RHEL, AIX

Оффлайн 𝓝𝓲𝓻𝓭

  • Участник
  • *
  • Сообщений: 217
    • Просмотр профиля
Запустил посмотрел не впечатлен. С ls как то нагляднее ИМХО
Больше всего глупостей в течение дня совершает человек, который рано встаёт и поздно ложится.

Оффлайн Sinus9x

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
dieselist, ничего не произошло вообще. И ничего не написал даже.
Попробовал сделать, как это посоветовал levine, но тоже ничего не произошло.
А могло ли так случиться, что после неправильного ввода мной пути для перемещения просто /123 возникла ошибка, из-за кот. больше эту операцию не совершить?
« Последнее редактирование: 05 Ноября 2010, 16:28:50 от Sinus9x »
...и даже это запорнушили.

 

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