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

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

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

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

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

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

Нужно поиграться с ключами, не уверен, что правильно указал.
...
Рейтинг: 0 / 0
09.03.2016, 16:35
    #39188368
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перемещение файлов из подпапок в корневую папку.
vkleМне рабочий вариант видится чуток иначе:
А он не будет пытаться переместить файлы в каталоге log в самих себя?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.03.2016, 18:03
    #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
09.03.2016, 18:08
    #39188491
tip78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перемещение файлов из подпапок в корневую папку.
Дмитрий МолчановЗадача.
Имеются файлы в папке /log/.../.../.../*.LOG
Необходимо их переместить в папку /log/ с удалением вложенных подпапок.
Имена вложенных подпапок нам неизвестны.
Скрипт необходимо обернуть в sh
ОС Linux
У кого какие будут соображения?
PS. Инет шерстил, пока ничего подходящего не нашел.

рекурсия это называется
https://www.google.ru/search?q=recursive file moving
...
Рейтинг: 0 / 0
09.03.2016, 21:08
    #39188608
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перемещение файлов из подпапок в корневую папку.
Dimitry SibiryakovvkleМне рабочий вариант видится чуток иначе:
А он не будет пытаться переместить файлы в каталоге log в самих себя?..Да, похоже, будет.
...
Рейтинг: 0 / 0
10.03.2016, 03:04
    #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
10.03.2016, 03:13
    #39188711
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перемещение файлов из подпапок в корневую папку.
Или как Vadim Lejnin показал
...
Рейтинг: 0 / 0
10.03.2016, 16:18
    #39189257
Перемещение файлов из подпапок в корневую папку.
Спасибо всем.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Перемещение файлов из подпапок в корневую папку. / 23 сообщений из 23, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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