С Новым годом! Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 76

Копировать и назначить определенные имена файлам

31.01.2020, 10:09. Показов 1556. Ответов 14

Студворк — интернет-сервис помощи студентам
Добрый день.
Возникла задача. Помогите пожалуйста решить.

В одной директории находится несколько папок (количество может быть разное), у которых имя имеет 4-х значный код (например 0032), а в другой директории находятся файлы (допустим изображений .jpg) с такими же названиями как и у папок, только с окончанием (Например, 0032_RU, 0032_UA).

Необходимо все файлы переместить в одноименные папки, чтобы не перетаскивать их вручную.

Как это можно реализовать?

Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2020, 10:09
Ответы с готовыми решениями:

Как назначить политику на определенные учётные записи домена, из разных групп ?
Как назначить политику на определенные учётные записи домена, из разных групп ?

Удалить определенные файлы на FTP сервере (пути к файлам известны)
Добрый день, уважаемые форумчане! С FTP я на вы, поэтому очень нужен совет! Ситуация такая: Имеем список путей к файлам на FTP вида...

Добавить к файлам, чьи имена начинаются с DSCN дату и время
Есть файлы, их имена начинаются на DSCN и заканчиваются на четыре цифры, потом идёт точка и расширение. Надо DSCN заменить на информацию о...

14
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
31.01.2020, 10:25
Здраствуйте. покажите на примере полное имя файла с раширением .jpg. Не совсем понятно где находится у них "окончание"
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 76
31.01.2020, 10:58  [ТС]
Имя папки "0597"
Имя файлов "05971_RU.jpg","05976_RU.jpg","05971_UA.jpg","05976_UA.jpg"

Вместо 5-й цыфры, может стоять любое число от 1 до 20, а также его может не быть

Добавлено через 1 минуту
Я нашел вот такой код

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
setlocal EnableDelayedExpansion
set fold=f:\TEST\Copy\dirs\
set pict=*.png,*.jpg,*.ico,*.gif,*.tif
pushd
chdir /d "%fold%"
for /f "delims=" %%a in ('dir %pict% /b /a:-d') do (
  set Where=%%a
  set Where=!Where:~0,2!
  if not exist !Where! md !Where!
  xcopy /y "%%a" !Where!\
)
popd
pause

Но он копирует фалы в папки если они находятся в одной директории. А у меня файлы лежат в другом месте
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
31.01.2020, 11:08
Ладно смогу предположить сама, если что вроде
Bash
1
file0011_RU.jpg
и в названии файла больше нет цифр кроме как в его "окончании" то самый простой вариант
Bash
1
find * -prune -name "*_*" -exec bash -c 'echo mv $0 /path/to/dir/${0//[^0-9]}' {} \;
В опции -name можете подправить шаблон или убрать вообще эту опцию
опцию -prune можно также не использовать если нет вложенных директорий
путь /path/to/dir естественно вставляете свой до директории где находятся папки 0032 и т.д.
Если вывод команды вас полностью устраивает то уберите "echo" чтобы команда выполнилась, вот так
Bash
1
find * -prune -name "*_*" -exec bash -c 'mv $0 /path/to/dir/${0//[^0-9]}' {} \;
Не видела ваш ответ, минуточку на исправление

Добавлено через 4 минуты
Еще раз повторюсь не убирайте "echo" из команды пока не будете полностью уверенны
в правильном выводе
Bash
1
find * -prune -name "*_*" -exec bash -c 'echo mv $0 /path/to/dir/${0:0:4}' {} \;
Добавлено через 4 минуты
Цитата Сообщение от Korzhik1991 Посмотреть сообщение
Но он копирует фалы в папки если они находятся в одной директории. А у меня файлы лежат в другом месте
Извиняюсь за дилетантский вопрос. А в каой системе вы работаете?
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 76
31.01.2020, 21:51  [ТС]
Waindows10
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
31.01.2020, 23:30
Korzhik1991, Я подглядела ваши сообщения и вижу что вы знаете где на форуме раздел "Batch (CMD/BAT)"
Или вы не ошиблись и хотите это выполнить из подсистемы Linux?
0
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,830
01.02.2020, 04:44
Копировать одноименные файлы в одноименные папки

А за скрюченной рекой
В скрюченном домишке
Жили летом и зимой
Скрюченные мышки.
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 76
03.02.2020, 20:51  [ТС]
Всем привет. Есть такая задачка.

Есть файл, допустим картинка. Примерное название 6578_01. И нужно этот файл раздублировать и назначить определенные имена 6402_01, 4598_01 и 2247_01 (тоесть поменять только первые 4 цыфры). В итоге 1 файл превращается в 4 копии.
И таких картинок очень много, и каждую нужно сдублировать и назначить свое уникальное имя. Тоесть в конечном результате файлов должно оказаться в 4 раза больше с уникальными именами.

Список имен, которые нужно назначить конкретному файлу находится в таблице.
Какой должен быть код batника?
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
03.02.2020, 21:34
В цикле считывать таблицу и выполнять 3 копирования и 1 переименование/перемещение
0
07.02.2020, 14:31

Не по теме:

Цитата Сообщение от nezabudka Посмотреть сообщение
Или вы не ошиблись и хотите это выполнить из подсистемы Linux?
В десятке, говорят, есть встроенный баш... насколько он полноценен - не ведаю.
Быть может, человек хочет воспользоваться именно этим решением?

0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8532 / 3368 / 105
Регистрация: 24.05.2011
Сообщений: 14,584
Записей в блоге: 8
07.02.2020, 15:50
Цитата Сообщение от Korzhik1991 Посмотреть сообщение
Есть файл, допустим картинка. Примерное название 6578_01. И нужно этот файл раздублировать и назначить определенные имена 6402_01, 4598_01 и 2247_01 (тоесть поменять только первые 4 цыфры). В итоге 1 файл превращается в 4 копии.
И таких картинок очень много, и каждую нужно сдублировать и назначить свое уникальное имя.
И заполнять при этом HDD одними и теми же файлами? А не лучше ль просто одному файлу дать необходимое количество имён? Количество файлов остаётся прежним, все имена указывают на один и тот же файл, но в каждой поддиректории будет лежать конкретное нужное имя для этого файла. И это можно сделать с любым количеством файлов.

Называется такая операция - создание жёстких ссылок. Жёсткая ссылка по сути - ещё одно имя для существующего файла.
К примеру, создадим текстовый файл:
Bash
1
touch File
У нас в текущей директории теперь лежит (пустой) текстовый файл File, который вы можете заполнить любым текстом (что нам совершенно неважно в обсуждаемом контексте).
Теперь мы хотим в соседней директории создать для него жёсткую ссылку. Пусть текущая директория у нас называется dir0, а соседняя dir1.
То бишь, если мы выполним ls .., то увидим:
Bash
1
2
3
4
5
ls ..
dir0 dir1
ls
File
ls ../dir1
Теперь создадим для ../dir0/File ссылку ../dir1/HardLink
Bash
1
ln File ../dir1/HardLink
И при выполнении ls ../dir1 увидим:
Bash
1
2
ls ../dir1
HardLink
При открытии которого увидим то самое произвольное содержимое, которое вы записывали в File

Всё то же самое можно делать и с файлами изображений - для системы они ровно такие же простые файлы, как и текстовые (тип содержимого файла задаётся другими средствами внутри самого файла), а посему для ваших фотографий такие чудеса файловой системы вполне подойдут. И при этом - не будет заниматься пространство на HDD под размещение копий тех же самых файлов с новыми именами.

Для массовых операций создания жёстких ссылок также можно задействовать скрипты.
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
07.02.2020, 17:35
Цитата Сообщение от NeoMatrix Посмотреть сообщение
В десятке, говорят, есть встроенный баш...
Он так и называется Windows Subsystem for Linux (WSL) это я и имела ввиду задавая вопрос

Не по теме:

Но к сожалению мои знания в этой области так же ограничены слухами и догадками.
Поэтому считаю что нет резона отвечать на другие вопросы пока не получен ответ на этот

0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 76
08.02.2020, 19:30  [ТС]
Вот визуальная структура как должно быть
Миниатюры
Копировать и назначить определенные имена файлам  
0
0 / 0 / 0
Регистрация: 31.01.2020
Сообщений: 76
08.02.2020, 19:31  [ТС]
Вот как должно получиться в итоге
Миниатюры
Копировать и назначить определенные имена файлам  
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
09.02.2020, 11:21
Korzhik1991, Вы ответили что ваша система windows, привели вариант программы работающей в виндовс системе,
Проигнорировали вопрос о подисистеме linux, которая может быть установлена. Могу и дальше погадать и предположить,
что вы все таки ошиблись разделом форума, ни когда не слышали о других операционных системах и пытаетесь
получить ответы по написанию батника для виндовс, задавая воросы в разделе по операционной системе линукс,
в частности по оболочке bash. Ну или вы просто крайне не внимательны, я тоже часто этим грешу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2020, 11:21
Помогаю со студенческими работами здесь

Доступ к внешним файлам(имена файлов и колл-во зараннее неизвестны) из программы.
Доброго времени суток. Постановка задачи: программе задаю путь к cpp проэкту, через QDialog. далее хотел бы чтоб программа прошлась...

Как задать правильные имена загруженным на сервер файлам и переместить их в каталог для хранения?
Доброго времени суток, форумчане! Есть форма для загрузки нескольких файлов на сервер. Не привожу весь код формы она конечно...

Подсчитать число каталогов в родительском каталоге. Напечатать их имена и номера блоков, соответствующих файлам
Здравствуйте! У меня есть задание звучит так "Подсчитать число каталогов в родительском каталоге. Напечатать их имена и номера блоков,...

Осуществить в папке поиск файлов, имена которых содержат название фирмы, и скопировать определенные их строки
На словах вроде просто звучит цель задачи, но много не понимаю как сделать. Задача простая : пройтись по файлам находящиеся в папке ,...

Возможно ли при выборе через opendialog заносить в ListBox имена файлов, а при чтении из ListBox получать путь к файлам?
Возможно ли при выборе через opendialog заносить в ListBox имена файлов, а при чтении из ListBox получать путь к файлам?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru