LinuxForum.Fans
Тема

Как удалить определённые картинки ?

Автор: PodKayfom 15 сообщений 2633 просмотров
18.02.2015 07:48 #414667

На сервере скопилось много мусорных (неиспользуемых) картинок. Они содержат в названии определённые символы - 150x , 300x , x50 . Пока скачиваю каталоги на комп, чищу вручную, потом удаляю каталог с сервера и заменяю новым. Но это занимает кучу времени. Ищу способ упростить работу - например команду CentOS чтобы стереть все такие картинки с сервера или из определённого каталога.

18.02.2015 09:37 #414672

Можно так (только сперва проверь без -delete)

text
find . -regextype posix-egrep -regex ".*150.*|.*300.*|.*50.*" -delete

Удалит все файлы, содержащие эти последовательности символов в названии. Если там есть файлы других типов, то можно поправить регулярное выражение.

18.02.2015 09:45 #414675

Что то не работает (использовал без delete ). Команда никакой информации не вывела.
К тому же мне надо удалить не 300, 150 и 50, а 300x, 150x и x50.

18.02.2015 09:50 · отредактировано #414676

Ну подставь иксы. Должно работать, я проверил.
Вместо первой точки подставь путь к каталогу.

18.02.2015 10:04 #414678

Спасибо, вроде как заработало.

find /home -regextype posix-egrep -regex ".*150x.*|.*300x.*|.*x50.*"

Но x50 много лишнего вывело, чего бы мне очень не хотелось бы удалять.

Попробую ка я эту команду, в случае чего уточню директорию.

find /home -regextype posix-egrep -regex ".*150x.*|.*300x.*"

Ещё раз спасибо за помощь.

18.02.2015 10:05 #414679

Почитай про регулярные выражения, тогда сможешь сделать чтобы лишнего не выводило.

18.02.2015 10:17 #414681

Спасибо. Если вам нетрудно, помогите мне пожалуйста конкретизировать регулярное выражение. У всех этих картинок есть общий префикс mark- . Картинки у которых этого префикса нету удалять не надо.

18.02.2015 10:23 #414682

Так?

text
".*mark-150x.*|.*mark-300x.*|.*mark-x50.*"

Или, если между mark- и 150x что-то ещё есть, то вот так

text
".*mark-.*150x.*|.*mark-.*300x.*|.*mark-.*x50.*"

Не обращай внимания, что выглядит страшно, главное чтобы заработало, а оптимизировать и упрощать потом можно.

18.02.2015 10:26 #414683

Спасибо за подсказку. *DRINK* Второй вариант - между mark- и 150x кое что есть.

18.02.2015 10:28 #414684

На будущее: в этом варианте регулярных выражений символ "." заменяет любой другой символ, а "*" означает любое число повторений предыдущего символа.

18.02.2015 10:39 #414687
"Vascom" написал:
Почитай про регулярные выражения, тогда сможешь сделать чтобы лишнего не выводило.

если не затруднит, подскажите что лучше почитать по регулярным выражениям для полного профана в них ?

18.02.2015 11:33 · отредактировано #414696

Без регулярных выражений, только с глобингом это могло выглядеть так:

text
find . -name 'mark-*150x*' -o -name 'mark-*300x*' -o -name 'mark-*x50*' -delete
18.02.2015 11:34 #414697

Вот я не знал как это "ИЛИ" делать :)

18.02.2015 11:35 #414698

Можно нагляднее, -or, синоним -o.

Войдите или зарегистрируйтесь, чтобы ответить.