Скрипт работы с директориями, помогите

12
[Удален]
844

Народ помогите, есть ли готовое решение скрипта или "php решение" (может прога), необходимо:

1. Есть директория, которую мы ходим "обрабатывать" в ней содержатся другие директории, к примеру "1", "2", "3" и так далее

2. Каждая из "1", "2", "3" содержит ещё категории (к примеру "а", "б", "в" - абсолютно разные для всех папок 1,2,3...)в которых содержатся файлы - допустим текстовые (.txt)

И нужно всего вытащить эти файлы на "уровень выше" ...

То есть чтобы "1", "2", "3" остались прежние, а вот внутри каждой этой папки были сразу файлы, а не директории, содержащие файлы ... (кстати некоторые файлы могут повторяться - надо бы их заменять ...)

Файлов десятки тысяч, посидел два часа правя в ручную понял дело бесполезное, может есть у кого какие идеи ?

ewg777
На сайте с 04.06.2007
Offline
225
#1

Нарисуйте примерно как они расположенный.

1

-- а

---- 1.txt

---- 2.txt

-- б

2

-- в

-- г

Так? И что должно получиться?

samimages
На сайте с 31.05.2009
Offline
427
#2

Как-то так. Должно работать в принципе.... но на хостинге запускать яб не стал)))


<?php
$root_dir = opendir("1");
while(($root_dir_dir = readdir($root_dir)))
{
if($root_dir_dir != "." and $root_dir_dir != "..")
{
if(!empty($root_dir_dir))
{
//Здесь папки 1,2,3...
$sub_dir = opendir($root_dir_dir);
while(($sub_dir_dir = readdir($sub_dir)))
{
if($sub_dir_dir != "." and $sub_dir_dir != "..")
{
if(!empty($sub_dir_dir))
{
//Здесь папки а,б,в...
$sub_dir_file = opendir($sub_dir_dir);
while(($file_dir_dir = readdir($sub_dir_file)))
{
if($file_dir_dir != "." and $file_dir_dir != "..")
{
if(!empty($file_dir_dir))
{
//Здесь файлы...
$sour = "1/".$root_dir_dir."/".$sub_dir_dir."/".$file_dir_dir;
$dest = "1/".$root_dir_dir."/".$file_dir_dir;
rename($sour, $dest);
}
}
}
closedir($sub_dir_file);
}
}
}
closedir($sub_dir);
}
}
}
closedir($root_dir);
?>
Опыт как иммунитет — приобретается в муках! Аудит семантики от 15К [долго] - ЛС
[Удален]
#3

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

samimages
На сайте с 31.05.2009
Offline
427
#4

Рад что улыбнуло)))

Работать будет? Это возможно?

А за красотой на php.ru можно сходить там ценники сразу называют...

Кстати на счет if - кто через это не проходил :):):)

[Удален]
#5
samimages:
Кстати на счет if - кто через это не проходил

лишь бы пройти, а не остаться :)

F
На сайте с 24.04.2009
Offline
45
#6
samimages:
Работать будет? Это возможно?

Возможно будет 😂

samimages
На сайте с 31.05.2009
Offline
427
#7

Правильно.

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

[Удален]
#8
ewg777:
Нарисуйте примерно как они расположенный.
1
-- а
---- 1.txt
---- 2.txt
-- б
2
-- в
-- г
Так? И что должно получиться?

Структура такая, в первом случае как есть сейчас:

1

-a

--1.txt

--2.txt

--3.txt и так далее

--4.txt

--5.txt

2

--6.txt

--7.txt

--8.txt и так далее

--9.txt

--10.txt

...

1,2,а,б,в,г,д,е - папки

а должно стать так:

1

-1.txt

-2.txt

-3.txt

-4.txt

-5.txt

2

-6.txt

-7.txt

-8.txt

-9.txt

-10.txt

...

При этом папки а,б,в,г,д,е будут на "одном уровне с текстовыми файлами" (их даже можно удалить - папки )

Всем спасибо, завтра попробую и сразу отпишусь как получилось!

Доброй ночи!

ewg777
На сайте с 04.06.2007
Offline
225
#9


foreach (glob('*/*/*.txt') as $file) {
$pos = strpos($file, '/');
$new = substr($file, 0, $pos) . '/' . basename($file);
rename($file, $new);
}

foreach (glob('*/*') as $dir) {
if (is_dir($dir)) {
rmdir($dir);
}
}
samimages, что адекватнее решает задачу?
[Удален]
#10

Всем спасибо, помогли сэкономинить неделю времени)!!!

🍻

12

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