Как удалить часть имени файла?

M2
На сайте с 19.11.2014
Offline
1
979

Есть в папке куча папок, папки вида:

ads253 15adasda4 3rg34 h43hb3df

ads253 3whb her rh5y464 3645tge34ау

ads253 g8u 437gjbw egj 784j g98ewjа54

мне надо удалить в начале каждого имени папки первые 6 символов, которые везде одинаковы.

Т.е. удалить выделенное жирным.

ads253 15adasda4 3rg34 h43hb3df

ПС-накопал что-то по теме:

list($name,$ext)=explode(".",$filename);

Но не знаю, куда это всунуть, т.к. папки создаются по функции скрипта, имя берется из получаемой переменной:

mkdir(.$pimg->attr['alt']);

Пробовал делать так:

mkdir(.$pimg->attr['alt']);

$dir=mkdir(.$pimg->attr['alt']);
list($name,$ext)=explode("ads253",$dir);

Но оно мне просто создает все так же папки, не удаляя эту фразу.

Может кто-нибудь помочь?

J
На сайте с 20.02.2014
Offline
120
jkm
#1

Создать новое http://php.net/manual/ru/function.mkdir.php или переименовать старое http://php.net/manual/ru/function.rename.php ?

Для отрезания строки http://php.net/manual/ru/function.substr.php

iqmaker
На сайте с 17.04.2012
Offline
342
#2

mkdir создает папки, а оно у вас как принимало так и принимает один и тот же аргумент, будет что-то вроде:


mkdir( substr(.$pimg->attr['alt'], strlen("ads253 ") ) );
M2
На сайте с 19.11.2014
Offline
1
#3
iqmaker:
mkdir создает папки, а оно у вас как принимало так и принимает один и тот же аргумент, будет что-то вроде:

mkdir( substr(.$pimg->attr['alt'], strlen("ads253 ") ) );

пытаюсь сделать так, как сказали вы:

$rest = mkdir( substr(.$pimg->attr['alt'] , strlen("ads253 ") ) );

$path = "data1/" .$rest '/' .filename.".jpg";

Но ругается на точку в первой строчке:/

И я не могу понять, как потом получившееся имя ввести во вторую строчку, как "перевалочный путь " для записи файла, ведь оно каждый раз генерируется по новому.Раньше было так и все работало:

$path = "data1/" .$pimg->attr['alt']  '/' .filename.".jpg" ;
siv1987
На сайте с 02.04.2009
Offline
427
#4
masta22:
Но ругается на точку в первой строчке:/

А удалить ее не пробовали? Зачем вы вообще эту точку везде понапихали?

iqmaker
На сайте с 17.04.2012
Offline
342
#5
masta22:
Но ругается на точку в первой строчке:/

siv1987, все верно ответил, точку уберите она видимо в наследство от слейки строк осталась.

ок очень длинно и с комментариями:


<?php
# Старое название папки т.е. подставить вызов функции $pimg->attr['alt']
$folder_old_name = "ads253 15adasda4 3rg34 h43hb3df";

# Название будущего файла
$filename = "abracadabra";

# Получаем новое название папки обрезая начало
$folder = substr($folder_old_name, strlen("ads253 ") );

# Создаем папку
mkdir( $folder );

#Создаем полный (видимо) путь до файла
$file = "data1/".$folder.'/'.$filename.".jpg";
?>
M2
На сайте с 19.11.2014
Offline
1
#6

iqmaker, спасибо огромное, теперь все работает!

ИшТы
На сайте с 11.02.2014
Offline
11
#7

в bash'е сделать нельзя?

for name in *; do new_name=$(echo $f|sed 's/ads253//g'); mv -f $name $new_name;done

Возник вопрос по серверному администрированию? Смотрите здесь (http://www.tech-notes.net/) Не нашли ответ? Напишите мне с помощью формы обратной связи (http://www.tech-notes.net/write-me/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий