Удаление файлов где встречается определенное слово
1.
ШЕДЕВР (16.08.2013 / 12:04)
Добрый день!
В папке images/ у меня хранятся фотографии.
Примерно такого названия:
1001n5615m6687n9384n1982u5666w8764x8451s5033e8918s1598.jpg
1001n5615m6687n9384n1982u5666w8764x8451s5033e8918s1598-big.jpg
1001n5615m6687n9384n1982u5666w8764x8451s5033e8918s1598-small.jpg
1001n5615m6687n9384n1982u5666w8764x8451s5033e8918s1598-normal.jpg
1001n5615m6687n9384n1982u5666w8764x8451s5033e8918s1598-tiny.jpg
3610r9727x3633r8104z8417o3032u1561u8876o9226m6698r4348.jpg
3610r9727x3633r8104z8417o3032u1561u8876o9226m6698r4348-big.jpg
и т.п.... то есть первая фотка без "-big, -small и т.п." является оригинальной. Все остальные режутся от неё. ПОлучилось так что нужно удалить с сервера фотки с размерами -small и -normal
через тотал командер пытался вывести только файлы с именем -small, но без результатно....
фотографий больше 2000 тыс. поэтому безсмысленно это делать вручную. с файлами не работаю, поэтому пожалуйста помогите средствами php удалить файли из папки images/ где содержится имя -small и -normal
ЗАРАНЕЕ СПАСИБО!
2.
Сергей (16.08.2013 / 12:17)
Привет , удаляешь unlink по вхождению strstr слова -small и -
normal
3.
ШЕДЕВР (16.08.2013 / 12:22)
<?php
/*Удаление*/
foreach(glob("*.*-small") as $filename){
unlink("./uploads/$filename");
}
?>
2, вот так сделал, что то не помогает(((
Добавлено через 04:57 сек.
$mask='../uploads/*.*-small.jpg';
array_map('unlink',glob($mask));
так тоже не помогает(((
4.
CyRaXMAN (16.08.2013 / 12:27)
foreach(glob("*-small.jpg") as $filename){
unlink($filename);
}
При этом скрипт должен быть запущен из этой директории
5.
Антон (16.08.2013 / 12:28)
3.
Moto-Moto, мм может strpos?
6.
mozzzg (16.08.2013 / 12:41)
файлы на компе или на сервере?
7.
ШЕДЕВР (16.08.2013 / 12:43)
4, твой код работает! спасибо. но почему то на денвере сработал. а на сервере он не переходит на него, он переадресовывает на главную.
5. покажешь пример?
6, на сервере
8.
Александр (16.08.2013 / 12:53)
CyRaXMAN (16 Августа 2013 / 11:27)
foreach(glob("*-small.jpg") as $filename){
unlink($filename);
}
При этом скрипт должен быть запущен из этой директории
Когда вы уже научитесь писать без гомнокода?
Автор указал что файлов несколько тысяч. Значит несколько тысяч раз будет выполнена "не очень легкая" функция glob, которую вы поместили в цикл. А потом сопли и слезы. Меня хостер заблокировал за превышение нагрузки.
$arr = glob(...) ;
foreach ($arr as...)
9.
CyRaXMAN (16.08.2013 / 12:56)
8.
rastoman, когда вы научитесь не выеживаться перед окружающими? Может лучше бы сами написали нормальный пример?
10.
Александр (16.08.2013 / 12:58)
9.
CyRaXMAN, а твой пример должен работать. К нему вопросов нет за исключением лишней нагрузки.
11.
CyRaXMAN (16.08.2013 / 12:59)
Еще один пример:
$d = opendir('.'); # текущая директория
while (false !== ($f = readdir($d))){
if (is_file($f) && strpos($f,'-small') !== false) unlink($f);
}
Замеры в битах не делал.
12.
Александр (16.08.2013 / 13:02)
Разве что сайт на nginx и в папке с картинками запрещено выполнение скриптов.
Тогда $arr = glob("путь к папке /*-small. jpg") ;
И скрипт в корень сайта.
13.
Петр (16.08.2013 / 13:53)
rastoman
Значит несколько тысяч раз будет выполнена "не очень легкая" функция glob, которую вы поместили в цикл.
Выполнится только один раз. Это не цикл, а foreach - он работает несколько иначе.
Добавлено через 02:08 сек.
И вообще, как я понял, здесь однократное использование.
URL:
https://visavi.net/topics/38704