На сервере скопилось много мусорных (неиспользуемых) картинок. Они содержат в названии определённые символы - 150x , 300x , x50 . Пока скачиваю каталоги на комп, чищу вручную, потом удаляю каталог с сервера и заменяю новым. Но это занимает кучу времени. Ищу способ упростить работу - например команду CentOS чтобы стереть все такие картинки с сервера или из определённого каталога.
Как удалить определённые картинки ?
Можно так (только сперва проверь без -delete)
find . -regextype posix-egrep -regex ".*150.*|.*300.*|.*50.*" -deleteУдалит все файлы, содержащие эти последовательности символов в названии. Если там есть файлы других типов, то можно поправить регулярное выражение.
Что то не работает (использовал без delete ). Команда никакой информации не вывела.
К тому же мне надо удалить не 300, 150 и 50, а 300x, 150x и x50.
Ну подставь иксы. Должно работать, я проверил.
Вместо первой точки подставь путь к каталогу.
Спасибо, вроде как заработало.
find /home -regextype posix-egrep -regex ".*150x.*|.*300x.*|.*x50.*"
Но x50 много лишнего вывело, чего бы мне очень не хотелось бы удалять.
Попробую ка я эту команду, в случае чего уточню директорию.
find /home -regextype posix-egrep -regex ".*150x.*|.*300x.*"
Ещё раз спасибо за помощь.
Почитай про регулярные выражения, тогда сможешь сделать чтобы лишнего не выводило.
Спасибо. Если вам нетрудно, помогите мне пожалуйста конкретизировать регулярное выражение. У всех этих картинок есть общий префикс mark- . Картинки у которых этого префикса нету удалять не надо.
Так?
".*mark-150x.*|.*mark-300x.*|.*mark-x50.*"Или, если между mark- и 150x что-то ещё есть, то вот так
".*mark-.*150x.*|.*mark-.*300x.*|.*mark-.*x50.*"Не обращай внимания, что выглядит страшно, главное чтобы заработало, а оптимизировать и упрощать потом можно.
Спасибо за подсказку. *DRINK* Второй вариант - между mark- и 150x кое что есть.
На будущее: в этом варианте регулярных выражений символ "." заменяет любой другой символ, а "*" означает любое число повторений предыдущего символа.
Почитай про регулярные выражения, тогда сможешь сделать чтобы лишнего не выводило.
если не затруднит, подскажите что лучше почитать по регулярным выражениям для полного профана в них ?
Да я и сам в них не очень разбираюсь, просто надо было иногда.
Начать можно с этого https://ru.wikipedia.org/wiki/Регулярные_выражения
Без регулярных выражений, только с глобингом это могло выглядеть так:
find . -name 'mark-*150x*' -o -name 'mark-*300x*' -o -name 'mark-*x50*' -deleteВот я не знал как это "ИЛИ" делать :)
Можно нагляднее, -or, синоним -o.