powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Перемещение файлов из подпапок в корневую папку.
23 сообщений из 23, страница 1 из 1
Перемещение файлов из подпапок в корневую папку.
    #39187938
Задача.
Имеются файлы в папке /log/.../.../.../*.LOG
Необходимо их переместить в папку /log/ с удалением вложенных подпапок.
Имена вложенных подпапок нам неизвестны.
Скрипт необходимо обернуть в sh
ОС Linux
У кого какие будут соображения?
PS. Инет шерстил, пока ничего подходящего не нашел.
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39187945
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МолчановУ кого какие будут соображения?
Сколько?
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39187970
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mv + rm
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39187975
vkle,

mv не подойдет, т.к. мы не знаем наименования вложенных подпапок, мы знаем только наименование корневой папки
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39187982
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Молчанов, звезда уже не работает?
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39187986
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
find -exec mv {} /path/ \;
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188062
vkle,

звезда работает если мы знаем уровень вложенности, а если он нам неизвестен?
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188078
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Молчановзвезда работает если мы знаем уровень вложенности, а если он нам
неизвестен?
Тогда надо ответить на вопрос "что делать с файлами в промежуточных каталогах".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188082
Dimitry Sibiryakov,

В промежуточных каталогах пусто
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188159
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы можете через find составить список ваших каталогов и отправить его в файл, потом считывать строчку из него, преходить в соответсвующих каталог и копировать файлики из него куда надо...
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188309
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Молчановvkle,

звезда работает если мы знаем уровень вложенности, а если он нам неизвестен?Про неизвестность уровней вложенности ничего говорено не было в изначальных условиях. Тады, как написали выше, вызывать mv из find + rm для удаления каталогов.
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188313
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем не устраивает?
Вячеслав Любомудровfind -exec mv {} /path/ \;
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188338
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mefmanчем не устраивает?
Вячеслав Любомудровfind -exec mv {} /path/ \;

Код: sql
1.
find /log/*/ -exec -name \*.log -type f -exec mv {} /log/  \;
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188341
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-exec в начале лишний
Код: sql
1.
find /log/*/  -name \*.log -type f -exec mv {} /log/  \;
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188346
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mefmanчем не устраивает?
Мне рабочий вариант видится чуток иначе:
Код: sql
1.
find /log -type f -exec mv "{}" /log \;
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188359
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ls -R * + цикл mv $file /log - выборка и перемещение файлов
затем выборка ls -R -F | grep / + цикл rm - выборка каталогов и их удаление

Нужно поиграться с ключами, не уверен, что правильно указал.
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188368
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleМне рабочий вариант видится чуток иначе:
А он не будет пытаться переместить файлы в каталоге log в самих себя?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188485
andycat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть проще программу написать, с рекурсивным обходом каталогов

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
/* mcarhdir.c */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <err.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include "crarhdir.h"
#include "crarhfile.h"

int selfilesanddir (const struct dirent * d)
{
	if ( !strcmp(".", d->d_name) || !strcmp("..", d->d_name)) return 0;
	return 1;
}

int main (int argc, char ** argv)
{
	/*char * tar_args[] = { "tar", NULL, NULL };
        execv ("/bin/tar", tar_args);*/

	/*FILE* f;
	char buf[128];
	f = popen("tar -cvf /home/qq/t1.tar /home/qq/t_f","r");
	while (fgets(buf,127,f))
	{
		fprintf(stdout,"%s\n",buf);
	}
	fclose(f);*/

	DIR* dir;
	struct dirent* de;
	struct dirent ** entry;
	struct stat st;
	char fullfn[255];
	int i;

	if ((argc == 1)||(argc == 2)) errx(1, "Expected directory name\nUsade: %s DIRECTORY\n", *argv);
	else if (argc >3) errx(1, "Extra arguments were specified\nUsade: %s DIRECTORY\n", *argv);

	/* Test source dir */
	if ((dir =opendir(argv[1])) == NULL) err(1, "opendir: %s\n", argv[1]);
	if (errno == EBADF) err(1, "readdir: '%s'\n", argv[1]);
	if (closedir(dir) == -1) err(1, "closedir: '%s'\n", argv[1]);

	/* Test arh dir */
	if ((dir =opendir(argv[2])) == NULL) err(1, "opendir: %s\n", argv[2]);
	if (errno == EBADF) err(1, "readdir: '%s'\n", argv[2]);
	if (closedir(dir) == -1) err(1, "closedir: '%s'\n", argv[2]);

	/*fprintf(stdout, "Source files and directories from '%s':\n",argv[1]);*/

	int n = scandir(argv[1],&entry, selfilesanddir, 0);
	if (n>=0)
	for (i = 0; i<n; i++)
	{
		strcpy(fullfn,argv[1]);
		strcat(fullfn,"/");
		strcat(fullfn,entry[i]->d_name);
		strcat(fullfn,"\0");
		stat(fullfn, &st);
		/*S_ISDIR(st.st_mode)?fprintf(stdout,"d"):fprintf(stdout,"-");
		fprintf(stdout,"%s\n",entry[i]->d_name);*/
		if (S_ISDIR(st.st_mode))
		{
			/* create arhive of dir */
			crarhdir(fullfn,entry[i]->d_name,argv[2]);
		}
		else
		{
			/* create arhive of files in parent dir */
			crarhfile(fullfn,argv[2]);
		}
		free(entry[i]);
	}
	free(entry);

	exit (0);

}
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188491
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МолчановЗадача.
Имеются файлы в папке /log/.../.../.../*.LOG
Необходимо их переместить в папку /log/ с удалением вложенных подпапок.
Имена вложенных подпапок нам неизвестны.
Скрипт необходимо обернуть в sh
ОС Linux
У кого какие будут соображения?
PS. Инет шерстил, пока ничего подходящего не нашел.

рекурсия это называется
https://www.google.ru/search?q=recursive file moving
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188608
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovvkleМне рабочий вариант видится чуток иначе:
А он не будет пытаться переместить файлы в каталоге log в самих себя?..Да, похоже, будет.
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188710
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоспади
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
lubomudr@lvl-suse:~>  cd /tmp 
lubomudr@lvl-suse:/tmp>  mkdir -p logs logs/1/2 logs/3/4/5 logs/6/7/8/9 
lubomudr@lvl-suse:/tmp>  touch logs/a.log logs/1/b.log logs/1/2/c.log logs/3/4/5/d.log logs/6/7/8/9/e.log 
lubomudr@lvl-suse:/tmp>  find /tmp/logs -name '*.log' -type f -ls 
12061295    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/6/7/8/9/e.log
12061291    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/a.log
12061292    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/1/b.log
12061293    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/1/2/c.log
12061294    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/3/4/5/d.log
lubomudr@lvl-suse:/tmp>  find /tmp/logs -mindepth 2 -name '*.log' -type f -ls 
12061295    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/6/7/8/9/e.log
12061292    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/1/b.log
12061293    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/1/2/c.log
12061294    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/3/4/5/d.log
lubomudr@lvl-suse:/tmp>  find /tmp/logs -mindepth 2 -name '*.log' -type f -exec mv {} /tmp/logs/ \; 
lubomudr@lvl-suse:/tmp>  find /tmp/logs -name '*.log' -type f -ls 
12061292    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/b.log
12061295    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/e.log
12061291    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/a.log
12061293    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/c.log
12061294    0 -rw-r--r--   1 lubomudr users           0 мар 10 09:57 /tmp/logs/d.log
lubomudr@lvl-suse:/tmp>
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39188711
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или как Vadim Lejnin показал
...
Рейтинг: 0 / 0
Перемещение файлов из подпапок в корневую папку.
    #39189257
Спасибо всем.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Перемещение файлов из подпапок в корневую папку.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]