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


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

Автор Тема: Сортировка файлов  (Прочитано 3067 раз)

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

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сортировка файлов
« Ответ #15 : 30 Января 2013, 13:50:02 »
cp --verbose ...
rsync --progress ...

Оффлайн codrilla

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: Сортировка файлов
« Ответ #16 : 30 Января 2013, 13:55:17 »
cp --verbose ...
rsync --progress ...
Да, про ключ -v я потом отредактировал. А можно что-то такое для файнда? Чтобы он выводил какой именно файл он просматривает в данный момент, не тот который он отобрал по условиями, а тот, который проверяет на эти условия?

Пользователь решил продолжить мысль 30 Января 2013, 13:58:07:
можно сделать через цикл while read x.
Сначала найдем все файлы с картинками, затем через канал передаем на while read x, который перемещает файлы и если перемещение удалось (&&) выводит сообщение что файл перемещен (echo $x перемещенн)
"Сначала найдем все файлы с картинками" - вот именно этот процесс меня интересует, не займёт ли он очень много времени. Файлов по всем папкам около миллиона. Его бы я и хотел визуализировать. Хотя я просто могу не понимать алгоритм работы команды файнд.
« Последнее редактирование: 30 Января 2013, 13:58:07 от codrilla »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сортировка файлов
« Ответ #17 : 30 Января 2013, 14:00:57 »
"Сначала найдем все файлы с картинками" - вот именно этот процесс меня интересует, не займёт ли он очень много времени.
Сначала просто выполнить "find ..." без "-exec", не?

Оффлайн codrilla

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: Сортировка файлов
« Ответ #18 : 30 Января 2013, 14:02:52 »
Ну окей. Буду тестировать этот код:
#!/bin/bash
printf "Начало положено...\n"
# ищем файлы с указанным расширением, размером больше 100 КБ, причем регулярные файлы
find . \( -name "*jpg" -o -name "*jpeg" -o -name "*png" -o -name "*bmp" \) -size +100K -type f -exec cp --verbose /Documents/result/ "{}" \;
printf "Готово.\n"

Очень надеюсь, что всё отработает с первого раза.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сортировка файлов
« Ответ #19 : 30 Января 2013, 14:04:14 »
cp --verbose /Documents/result/ "{}"
Аргументы местами перепутали.
Более того, имеет смысл добавить проверку существания файла с таким же именем в конечном каталоге.
« Последнее редактирование: 30 Января 2013, 14:06:09 от ArcFi »

Глупый_Мо

  • Гость
Re: Сортировка файлов
« Ответ #20 : 30 Января 2013, 14:04:29 »
Как то так. Это набросок. Можно сделать и лучше.
#!/bin/bash
find "$1" -name '*\.jpg' -size +100k | while read x; do
mv "$x" "$2" && echo "Файл "$x перемещен в $2"
done
« Последнее редактирование: 30 Января 2013, 14:08:56 от Izamoo »

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

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Сортировка файлов
« Ответ #21 : 30 Января 2013, 14:08:04 »
Izamoo,
а разве
echo "Файл "$1 перемещен в $2"будет выводить в одну и туже строку или строки будут дублироваться при смене имени файла?
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн codrilla

  • Автор темы
  • Новичок
  • *
  • Сообщений: 22
    • Просмотр профиля
Re: Сортировка файлов
« Ответ #22 : 30 Января 2013, 14:09:02 »
cp --verbose /Documents/result/ "{}"
Аргументы местами перепутали.
Более того, имеет смысл добавить проверку существания файла с таким же именем в конечном каталоге.

Да, видимо надо сделать так?
#!/bin/bash
printf "Начало положено...\n"
# ищем файлы с указанным расширением, размером больше 100 КБ, причем регулярные файлы
find . \( -name "*jpg" -o -name "*jpeg" -o -name "*png" -o -name "*bmp" \) -size +100K -type f -exec cp /Documents/result/ --verbose "{}" \;
printf "Готово.\n"

Хотя могу ошибаться.

Глупый_Мо

  • Гость
Re: Сортировка файлов
« Ответ #23 : 30 Января 2013, 14:09:17 »
Izamoo,
а разве
echo "Файл "$1 перемещен в $2"будет выводить в одну и туже строку или строки будут дублироваться при смене имени файла?
echo "Файл "$x перемещен в $2"

Глупый_Мо

  • Гость
Re: Сортировка файлов
« Ответ #24 : 30 Января 2013, 14:11:04 »
Izamoo,
а разве
echo "Файл "$1 перемещен в $2"будет выводить в одну и туже строку или строки будут дублироваться при смене имени файла?

Я думаю, что это всё выведется кучей строк.

Да, точно, файлов то дожопы. :)
Хотя можно через clear и что бы не мелькало sleep 1
« Последнее редактирование: 30 Января 2013, 14:12:41 от Izamoo »

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сортировка файлов
« Ответ #25 : 30 Января 2013, 17:34:54 »
Код: (bash) [Выделить]
#!/bin/bash

DIR_SRC="/path/to/dir/"
DIR_DST="/Documents/result/"

cd "$DIR_SRC" || exit 1
find -regextype posix-extended -iregex '^.*\.(bmp|gif|jpeg|jpg|png|tif)$' -size +100k -type f | while read FILE
do
if [ ! -f "$DIR_DST/$(basename "$FILE")" ]
then
cp --verbose "$FILE" "$DIR_DST"
else
cp --verbose "$FILE" "$DIR_DST/$(basename "$FILE").$RANDOM"
fi
done
« Последнее редактирование: 30 Января 2013, 17:37:02 от ArcFi »

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 630
    • Просмотр профиля
Re: Сортировка файлов
« Ответ #26 : 30 Января 2013, 18:02:17 »
А нужно ли тут -type f  ? Ведь и так отбор идет по расширениям файлов.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Сортировка файлов
« Ответ #27 : 30 Января 2013, 18:34:49 »
А нужно ли тут -type f  ? Ведь и так отбор идет по расширениям файлов.
Кашу маслом не испортишь. =)
У каталогов могут быть имена, попадающие под регэксп.

 

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