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


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

Автор Тема: Как сделать красиво (ls,find,-exec ???)  (Прочитано 5842 раз)

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

Оффлайн proctoleha

  • Автор темы
  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Продолжаю тренироваться с терминалом, подскажите как сделать красиво и правильно.

Исходные условия для задачи:
имеется каталог скажем base, в нем директории dir1, dir2, dir3. В некоторых из них возможно есть подкаталоги, они меня не интересуют, также в этих директориях есть файлы *.swf, они то мне и нужны.

Что нужно:
скопировать файлы  *.swf в новый каталог new_base c сохранением структуры каталогов dir1, dir2, dir3. Т.е. на выходе должны получиться эти dir1, dir2, dir3 с кучей только *.swf файлов внутри.

Не буду рассказывать о своих изысканиях, чтобы совсем вас не запутать, скажем кратко  пытаюсь использовать find  -exec cp, получается что то непонятное.

Подскажите пожалуйста как все это можно сделать красиво, по возможности одной командой, и без скрипта. Когда плотно буду заниматься bash скриптами, тогда и вопросы по скриптам буду задавать.

За что я временами ненавижу Линукс - так это за свои кривые руки

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #1 : 21 Июля 2010, 11:42:23 »
Если Вы знаете, что и где находится, то можно обойтись без find. Так будет проще.

Оффлайн proctoleha

  • Автор темы
  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #2 : 21 Июля 2010, 11:51:14 »
Я не знаю как называются файлы *.swf, мне известно только расширение файла, их там несколько десятков, неужели каждый прописывать?
За что я временами ненавижу Линукс - так это за свои кривые руки

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #3 : 21 Июля 2010, 11:56:02 »
cd откуда
cp *.swf куда

Оффлайн proctoleha

  • Автор темы
  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #4 : 21 Июля 2010, 12:04:02 »
cd откуда
cp *.swf куда
внутри base/dir1 несколько подкаталогов, а в них нужные мне файлы. Мне что перемещаться в каждый из этих подкаталогов?

Еще раз уточняю условия задачи: необходимо взять все нужные файлы из base/dir1 .... (мне фиолетово где они там лежат внутри подкаталогов, или в самой папке dir1) и скопировать их в new_base/dir1. Скопировать только файлы!
« Последнее редактирование: 21 Июля 2010, 12:07:25 от proctoleha »
За что я временами ненавижу Линукс - так это за свои кривые руки

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #5 : 21 Июля 2010, 12:09:32 »
внутри base/dir1 несколько подкаталогов, а в них нужные мне файлы. Мне что перемещаться в каждый из этих подкаталогов?
//Т.е. на выходе должны получиться эти dir1, dir2, dir3 с кучей только *.swf файлов внутри.

У cp есть ключ рекурсивности (если память не подводит).

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #6 : 21 Июля 2010, 12:25:33 »
Подскажите пожалуйста как все это можно сделать красиво, по возможности одной командой, и без скрипта.

Безотносительно конкретной задачи.
Всегда проще делать скриптом, чем одной командой.
Потом помедитировав над скриптом, можно сократить количество команд (если сильно жмет).

Оффлайн kroxa90

  • Участник
  • *
  • Сообщений: 114
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #7 : 21 Июля 2010, 12:30:28 »
sudo apt-get -y install rsync
rsync --include "*/" --include "*.swf" --exclude "*" -r --progress  /путь_откуда/ /путь_куда/

Подробнее man rsync
Не дружим с буржуйским? Русский ман
lubuntu 12.04
не пользую man, поиск и гугл в связи с религиозными взглядами

Оффлайн proctoleha

  • Автор темы
  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #8 : 21 Июля 2010, 12:50:59 »
получилось пока только так:
Перехожу в общий каталог base и начинаю ручками перебирать:
find dir1 -name "*.swf" -exec cp {} new_base/dir1 \;
Потом вместо dir1 - подставляешь dir2 и т.д.

Каталоги new_base/dir* были созданы заранее.

По любому получилось быстрее чем через GUI, тем более наконец то на практике применил find, претворил так сказать теорию в практику. Ура!!!

 А скрипт да, нужен, это для меня типовая задача, выбрать нужные файлы и куда то закинуть. Буду думать. Готовых решений прошу не выкладывать, неинтересно будет.
За что я временами ненавижу Линукс - так это за свои кривые руки

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #9 : 21 Июля 2010, 13:18:46 »
Предложение.
Если Вы потом не удаляете исходные файлы и используете тот же самый носитель, м.б. для экономии использовать символьные ссылки.
ln -s ...

Оффлайн proctoleha

  • Автор темы
  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #10 : 21 Июля 2010, 13:28:19 »
Неее, я как только потренировалался, с наслаждением грохнул старый каталог. В swf файлах уроки, и мне приходилось лазать по всем каталогам, чтобы их просмотреть. Теперь я их вытащил и жить стало чуточку легче :). Теперь кто бы подсказал плеер с возможностью создания play list'a для полного счастья. Ни стандартный плеер, ни vlc не берут эти файлы. И такое сильное подозрение потому, что они сделаные не совсем руками. Нашел какой то чисто flash player в синаптике, он работает, но список создать нельзя, чересчур простой.
За что я временами ненавижу Линукс - так это за свои кривые руки

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #11 : 21 Июля 2010, 13:40:32 »
a что Mplayer + SmPlayer не устраивает ??
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн kroxa90

  • Участник
  • *
  • Сообщений: 114
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #12 : 21 Июля 2010, 13:47:41 »
Цитировать
получилось пока только так:
Перехожу в общий каталог base и начинаю ручками перебирать

Мой способ не подошел?
Странно. Должен работать на 100%
lubuntu 12.04
не пользую man, поиск и гугл в связи с религиозными взглядами

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #13 : 21 Июля 2010, 15:37:19 »
Намедни нужно было из DVD с Дебианом скопировать все .deb файлы. Они там разбросаны по папкам. Использовал find в связке с xargs. Когда используется xargs, то cp нужно использовать с ключом -t (это не POSIX стандарт).
Здесь код.
(Нажмите, чтобы показать/скрыть)
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн фирэфохэ

  • Старожил
  • *
  • Сообщений: 2169
  • straightedge
    • Просмотр профиля
Re: Как сделать красиво (ls,find,-exec ???)
« Ответ #14 : 21 Июля 2010, 15:54:47 »
Или так:
find ./base -name *.ххх -print0 | xargs -0 cp --parents --target-directory ./out_dir--parents - для создания такой же структуры папок.
http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ - УГ. Дебиан - недоось.

 

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