Файловую структуру можно не только просматривать, но и всячески модифицировать. В прошлом уроке мы научились создавать файлы через перенаправление потоков, но всё это можно делать и напрямую.
ответа
Лучший ответ
Без переименования вы можете изменить имена файлов, выполнив обе замены «$one» и «$two» с помощью команды mv и подстановка команды с помощью {{ X3 } } . Это исключает «Какую версию переименования у меня есть?»
Например, в вашем случае вы можете перейти в каталог, содержащий файлы, и выполнить:
one=»ssss» two=»1234″ for i in *; do mv «$i» «$(sed ‘s/^\(.*hs5_\)[^.]*\([.].*com_\)[0-9]*\(.*$\)/\1′»$one»‘\2′»$two»‘\3/’ <<< «$i»)» done
Который использует sed нормальную команду подстановки, использующую три группы захвата и обратные ссылки.
< Сильный > Объяснение
Команда замещения sed — sed ‘s/find/replace/’, где в вашем случае находка разбита на части:
- ^\(.*hs5_\) совпадают с начала имени файла до «hs5_» захвата текста в группе захвата \( … \) с использованием основных регулярных выражений, которые должны быть повторно вставлены с первой обратной ссылкой \1;
- с «hs5_» и далее мы сопоставляем [^.]* последовательность символов, не содержащую ‘.’;
- затем мы получаем из ‘.’ через «com_» захват \([.].*com_\) для повторной вставки со второй обратной ссылкой \2; и наконец
- захватить все символы до конца имени файла с \(.*$\) для повторного вставления как \3
Для части замены мы просто включаем захваченный текст, делая замены переменных:
- \1′»$one»‘\2′»$two»‘\3
( примечание: цитирование очень специфическое. Части команды sed заключены в одинарные кавычки, а переменные оболочки заключены в двойные кавычки вместе с полной подстановкой команды.
Базовое перемещение файла выполняется с помощью mv «$i» «$(sed … <<< «$i»), где имя файла передается команде sed с использованием только Here-String <<<, которая перенаправляет содержимое переменной команды sed на stdin, позволяющей sed выполнять подстановки, завершающие перемещение.
2 David C. Rankin 27 Дек 2019 в 03:35
Согласно шаблону same_same_»${one}»_»${two}».same, как насчет:
one=»ssss» two=»1234″ for f in *.*; do IFS=_ read -ra a <<< «$f» a[2]=»${one}.${a[2]#*.}» a[3]=»${two}.${a[3]#*.}» (IFS=_; mv — «$f» «${a[*]}») done
Сначала он разделяет имя файла на _, заменяет указанные позиции на переменные, затем объединяет их снова как новое имя файла.
2 tshiono 27 Дек 2019 в 04:00
- Команда MV в Linux. Описание и примеры
- Команда mv в Linux
- Команда mv — просто переименуй!
Это также может работать для вас — (GNU параллельно):
parallel ‘mv {1} {=1 s/(_.*_)[^.]+(.*_)[^.]+/$1$arg[2]$2$arg[3]/ =}’ ::: * ::: ssss ::: 1234
Используйте GNU параллельно для исключения переменных forloop и shell. {=n … =} позволяет использовать команды perl для n-й строки позиционной замены. В этом случае используйте команду замены для замены частей каждого имени файла, полученного из ::: *.
Примечание . Перед выполнением этой команды всегда рекомендуется вставить параметр —dry-run и проверить его вывод перед запуском.
2 Curious Sam 29 Дек 2019 в 21:55
Я вышел с этим для ваших имен файлов (2019-12-19_hs5__)
one=»ssss» two=»1234″ for file in *; { name=${file//_[0-9]*.g/_$two.g}; name=${name//_*.d/_$one.d}; mv $file $name; }
Этот метод использует подстановки переменных $ {var // pattern / change}
1 Ivan 27 Дек 2019 в 13:14
Файлы — cmd. Работа с файлами из консоли. Часть 2
Вторая часть поста, в котором будут рассмотрены основные команды для работы с файлами. В первой части было рассказано про то, как удалить файл и каталог используя , если Вы не читали, то советую прочитать. В этом посте будут рассмотрены команды, которые позволят пользователю…
- Перемещать файлы.
- Переименовывать файлы.
- Выводить содержимое файлов в консоль.
- Записывать в файл (txt) результат выполнения команды.
Как всегда, все команды будут представлены Вашему вниманию в сопровождении коротких, но ясных описаниях, а так же будут прилагаться «Пошаговые» скриншоты.
Первым делом, я расскажу, как переместить файл из одной директории в другую.
Как переместить файл через консоль?
Для перемещения файлов используется команда под названием «MOVE». Что бы переместить файл из корня диска «C:\ » в папку, в моём случаи это «С:\Test_Move» пишем в консоль:
Результат выполнения команды. Файл «» был перемещён в папку «Test_Move»
Если Вам нужно переместить все файлы с конкретным расширением, то в этом случаи стоит писать так:
Для примера я создал 3 файла «Move_, Move_ и Move_» Как видно из скриншота выше, все три файла были перемещённых. В этом можно убедится не закрывая консоль.
Для проверки используем команду «DIR»
С перемещением файлов на этом все. Но, если в каталоге куда нужно переместить файл уже есть такой? То пользователь получит сообщения, в котором его спросят подтвердить, перезаписать файл или нет.
Если ввести символ «Y» то файл будет перезаписан. При этом содержимое уже имеющегося файла в каталоге «C:\Test_Move\» будут потеряны.
Если ввести символ «N» файл не будет перемещён.
Если ввести «ALL» то будут перемещены и перезаписаны все файлы с конкретным расширением. При этом, также, содержимое файлов в директории «C:\Test_Move\» будут потеряны.
Примечание: За место «ALL» можно просто ввести букву «А» результат будет додже.
Что бы отключить предупреждения используется ключик «/Y»
Теперь все файлы будет перемещены и перезаписаны без всяких предупреждений. Будьте внимательны, можно потерять важную информацию.
Как переименовать файл через
Для того, чтобы переименовать существующий файл используется команда «RENAME» Я создал файл с именем «» в корне диска «С:\» что бы его переименовать, скажем в «NEW_» пишем в консоли.
Файл «» будет переименован.
Примечание: Команду «RENAME» можно писать короче, просто «REN» от этого результат не изменится.
Можно сменить расширения у всех файлов в каталоге, например с «txt» на «cmd». Для этого делаем так:
Теперь уже в знакомой нам папке «Test_Move» все 3(три) файла приобретут расширение «cmd» за место «txt»
Как вывести содержимое файла в консоль?
Если появилась необходимость просмотреть содержимое файла прямо в cmd. Для этого пользуемся командой «TYPE» Я создал файл и написал в нём адрес своего блога. Теперь попробуем просмотреть данный файл из консоли, не запуская его обычном, привычным образом.
В общем все просто. Но как быть с файлами большего размера, где много информации? В этак случаи содержимое файла нужно выводить с паузой, чтобы просмотреть его полностью.
Для этого пишем так:
Для примера взял текст с первого попавшегося забугорного сайта.
В конце добавляем «| more» таким образом содержимое файла будет выводится не полностью а отрывками, чтобы просмотреть следующею часть файла жмём «Enter»
Как записать в файл результат выполнения команды?
Для примера запишем в файл результат команды «DIR» В консоль пишем:
Обратите внимание на символ «>» он то и играет здесь главную роль. В итоге появится файл на диске «C:\» с именем «» куда будет записан результат выполнения команды.
Если Вам понадобится записать результат команды «DIR» ещё раз, то файл «» будет перезаписан и ранние содержимое файла будет удалено!
Что бы этого избежать и просто добавить новый результат не удаляя старый, стоит использовать символ «>» два раза, то есть вот так:
Теперь файл не будет перезаписан, в него просто добавится новый результат в конец файла.
На этом я пожалуй закончу пост, и отправлюсь праздновать первый день рождения сына, ему сегодня исполняется один годик!!!
Спасибо за внимание!
Терминал Linux. Создание, удаление, копирование, перемещение, переименование файлов и директорий
C навигацией разобрались, теперь научимся создавать, удалять, копировать, перемещать файлы и директории (каталоги) в терминале Linux.
Комментирование приветствуется.

Создание файлов и директорий в терминале Linux
Текстовый файл в терминале Linux можно создать тремя способами.
1. С помощью команды touch:
Вводим команду touch, затем путь и название нового файла.

touch /путь/к/файлу/название_файла
Например, создадим текстовый файл в текущей директории с именем :
2. С помощью перенаправления стандартного потока вывода любой команды

- О перенаправлении стандартных потоках вывода в файл более подробно будет рассказано в одной из следующих статей о терминале Linux.
- Создать файл можно также перенаправлением вывода любой команды в файл.
- В общем виде команда будет следующей:
какая_нибудь_команда > /путь/к/файлу/наименование_файла
- То есть, команда с выводом, затем галочка вправо >, означающая перенаправление вывода команды в файл и путь к файлу.
- Например, перенаправим вывод справки команды ls в файл, который будет создан (а если такой файл есть, то он будет полностью перезаписан):
- Но это мы создали не пустой файл, а если хотим создать пустой, то воспользуемся командой echo c переданной ей пустой строкой (две одинарных ковычки) и перенаправим это в файл:
3. С помощью любого текстового редактора, консольного или с графическим интерфейсом

- Передаем команду запуска любого текстового редактора и путь к файлу.
- Самый простой консольный текстовый редактор это nano:
- Или с помощью текстового редактора с графическим интерфейсом, который установлен в Gnome по умолчанию:
- Про манипуляции с текстом более подробно в одной из следующих статей о терминале Linux.
Создание директорий (каталогов) в терминале Linux
- Создание каталогов выполняется командой «mkdir» (от англ. make directory):
- Создать директорию с именем «dir1»:
- Создать две директории одновременно:
- Создать дерево директорий:
Удаление файлов и директорий в терминале Linux

Для удаления директорий используется команда «rmdir» (от англ. remove directory):
Удаляются директории аналогично, как и создаются. Такие же команды.
Удаление файлов в терминале Linux

Для удаления файлов используется команда «rm» (от англ. remove).
- Работает очень просто, пишете команду rm и путь к файлу, который хотите удалить:
- Удалить файл с именем «file1»:
Но команда «rm» позволяет удалять не только файлы, но и директории (каталоги) вместе с их содержимым.
- Удалить директорию с именем «dir1» и рекурсивно всё её содержимое:
- Удалить две директории и рекурсивно их содержимое:
- Также можно добавить параметр -f, который означает, что при удалении не будет запрашиваться подтверждение на удаление. Команды будут выглядеть так:

Перемещение и переименование файлов и директорий в терминале Linux
Для перемещения и переименовывания файлов и директорий (каталогов) используется команда «mv» (от англ. move).
Всё очень просто. Чтобы переименовать файл, выполняем команду:
mv название_файла новое_название

- Чтобы переместить файл:
Копирование файлов и директорий в терминале Linux
Для копирования используется команда «cp» (от англ. copy).
- Скопировать файл file1 и назвать его file2:
- Копировать директорию dir1 в директорию dir2:
- Копировать файл с именем file1 в директорию c именем dir1:

Справка о командах
- У каждой команды присутствует множество параметров, чтобы узнать их, просто наберите команду и параметр —help:
- Например:
Топ-Bash-команд: итоги
Получение информации
man: вывод руководства (справки) по команде pwd: вывод рабочей директории ls: список содержимого директории ps: просмотр выполняемых процессов
Действия
cd: изменение рабочей директории touch: создание файла mkdir: создание директории cp: копированиеmv: удаление или переименование ln: ссылка
Перенаправление и конвейеризация
<: перенаправление stdin >: перенаправление stdout |: конвейерная передача содержимого из одной команды в другую
Чтение
head:чтение начала файла tail:чтение конца файла cat: чтение файла или конкатенация файлов
Завершение
rm: удалениеkill: завершение процесса
Поиск
grep: поискag: поиск
Архивация
tar: объединение нескольких файлов в один.
Работа с каталогами
alt-o — открыть каталог под курсором в соседней панели
alt-i — открыть текущий каталог в соседней панели
сtrl-\ — показать «Справочник каталогов»
ctrl-x, h — добавить ссылку на текущий каталог в меню быстрого доступа
alt-shift-h — Отобразить историю каталогов
Ctrl+l — Перерисовать экран
- Как переименовать файл Linux | Losst
- Команда mv в Linux
- mv в Linux
Ctrl+r — перечитать содержимое каталога
Ctrl+Space — Показать размер текущего каталога
Ctrl-X+D — сравнить каталоги
ESC+C — быстро сменить каталог
alt-c -окно «Быстрая смена каталога»