Переименовать файл bash в sh как линукс

Обновлено: 06.07.2024

Переименование файла linux - очень простая операция, но для новичков в Linux эта задача может оказаться сложной. Также здесь есть несколько нюансов и возможностей, которые желательно знать уже опытным пользователям, например, массовое переименование. В графическом интерфейсе все делается очень просто, но настоящую гибкость дает терминал.

В этой статье мы рассмотрим как переименовать файл в Linux с помощью терминала, рассмотрим такие возможности, как массовое пакетное переименование файлов, а также регулярные выражения.

Как переименовать файл в Linux с помощью mv

В Linux существует замечательная стандартная утилита mv, которая предназначена для перемещения файлов. Но по своей сути перемещение - это то же самое, что и переименование файла linux, если выполняется в одной папке. Давайте сначала рассмотрим синтаксис этой команды:

$ mv опции файл-источник файл-приемник

Теперь рассмотрим основные опции утилиты, которые могут вам понадобиться:

  • -f - заменять файл, если он уже существует;
  • -i - спрашивать, нужно ли заменять существующие файлы;
  • -n - не заменять существующие файлы;
  • -u - заменять файл только если он был изменен;
  • -v - вывести список обработанных файлов;

Чтобы переименовать файл linux достаточно вызвать утилиту без дополнительных опций. Просто передав ей имя нужного файла и новое имя:

mv file newfile


Как видите, файл был переименован. Вы также можете использовать полный путь к файлу или переместить его в другую папку:

mv /home/sergiy/test/newfile /home/sergiy/test/file1


Обратите внимание, что у вас должны быть права на запись в ту папку, в которой вы собираетесь переименовывать файлы. Если папка принадлежит другому пользователю, возможно, нужно будет запускать программу через sudo. Но в таком случае лучше запускать с опцией -i, чтобы случайно ничего не удалить.

Переименование файлов Linux с помощью rename

В Linux есть еще одна команда, которая позволяет переименовать файл. Это rename. Она специально разработана для этой задачи, поэтому поддерживает такие вещи, как массовое переименование файлов linux и использование регулярных выражений. Синтаксис утилиты тоже сложнее:

$ rename опции 's/ старое_имя / новое_имя ' файлы

$ rename опции старое_имя новое_имя файлы

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

Рассмотрим опции утилиты:

  • -v - вывести список обработанных файлов;
  • -n - тестовый режим, на самом деле никакие действия выполнены не будут;
  • -f - принудительно перезаписывать существующие файлы;

Например, переименуем все htm файлы из текущей папки в .html:

rename 's\.htm/\.html/' *.htm


Или для изображений:

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

  • g (Global) - применять ко всем найденным вхождениям;
  • i (Case Censitive) - не учитывать регистр.

Модификаторы размещаются в конце регулярного выражения, перед закрывающей кавычкой. Перед тем, как использовать такую конструкцию, желательно ее проверить, чтобы убедиться, что вы не допустили нигде ошибок, тут на помощь приходит опция -n. Заменим все вхождения DSC на photo в именах наших фотографий:

rename -n 's/DSC/photo/gi' *.jpg


Будут обработаны DSC, DsC и даже dsc, все варианты. Поскольку использовалась опция -n, то утилита только выведет имена изображений, которые будут изменены.

Можно использовать не только обычную замену, но и полноценные регулярные выражения чтобы выполнить пакетное переименование файлов linux, например, переделаем все имена в нижний регистр:


Из этого примера мы видим, что даже если такой файл уже существует, то он перезаписан по умолчанию не будет. Не забывайте использовать опцию -n чтобы ничего случайно не повредить.

Переименование файлов в pyRenamer

Если вы не любите использовать терминал, но вам нужно массовое переименование файлов Linux, то вам понравится утилита pyrenamer. Это графическая программа и все действия здесь выполняются в несколько щелчков мыши. Вы можете установить ее из официальных репозиториев:

sudo apt install pyrenamer


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





Вы можете удалять или добавлять символы, переводить регистр, автоматически удалять пробелы и подчеркивания. У программы есть подсказки, чтобы сделать ее еще проще:


Опытным пользователям понравится возможность pyRenamer для переименования мультимедийных файлов из их метаданных. Кроме того, вы можете переименовать один файл если это нужно. Эта утилита полностью реализует функциональность mv и remove в графическом интерфейсе.

Выводы

В этой статье мы рассмотрели как переименовать файл в консоли linux. Конечно, есть и другие способы, например, написать скрипт, или использовать файловые менеджеры. А как вы выполняете сложные операции по переименованию? Напишите в комментариях!

Вся сила Linux в использовании терминала. Это такая командная оболочка, где вы можете выполнять различные команды, которые будут быстро и эффективно выполнять различные действия. Ну впрочем, вы наверное это уже знаете. Для Linux было создано множество скриптов, которые выполняются в различных командных оболочках. Это очень удобно, вы просто объединяете несколько команд, которые выполняют определенное действие, а затем выполняете их одной командой или даже с помощью ярлыка.

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

Как работают скрипты

В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.

Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа - интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.

Запуск скрипта sh в Linux

Сначала рассмотрим пример небольшого sh скрипта:

Вторая строка - это действие, которое выполняет скрипт, но нас больше всего интересует первая - это оболочка, с помощью которого его нужно выполнить. Это может быть не только /bin/bash, но и /bin/sh, и даже /usr/bin/python или /usr/bin/php. Также часто встречается ситуация, что путь к исполняемому файлу оболочки получают с помощью утилиты env: /usr/bin/env php и так далее. Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости:

chmod ugo+x script.sh

Мы разрешаем выполнять запуск sh linux всем категориям пользователей - владельцу, группе файла и остальным. Следующий важный момент - это то место где находится скрипт, если вы просто наберете script.sh, то поиск будет выполнен только глобально, в каталогах, которые записаны в переменную PATH и даже если вы находитесь сейчас в той папке где находится скрипт, то он не будет найден. К нему нужно указывать полный путь, например, для той же текущей папки. Запуск скрипта sh в linux:

Или полный путь от корня:

Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ - /usr/local/bin.

cp script.sh /usr/local/bin/script.sh

Теперь вы можете выполнить:

Это был первый способ вызвать скрипт, но есть еще один - мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:

А если нам нужно запустить скрипт на php, то выполните:

Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:

Даже запустить процесс linux не так сложно.

Выводы

Как видите, запуск скрипта sh в linux - это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!


В этом руководстве мы обсудим, что такое перенаправление Bash и как работать с перенаправлением в Bash с помощью примеров команд.

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

Что такое дескриптор файла?

Когда вы открываете файл в Linux, каждому файлу присваивается целое число, и эта информация хранится в ядре.

Таким образом, ядро знает, какие файлы открыты и какой процесс открыл эти файлы.

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

  • FD 0 -> Стандартный вход(stdin) -> клавиатура
  • FD 1 -> Стандартный вывод(Stdout) -> дисплей(терминал)
  • FD 2 -> Стандартная ошибка(Stderr) -> Дисплей(терминал)

Вы можете увидеть дескрипторы файлов в каталоге /dev:

Stdin (FD0) получает ввод с клавиатуры. stdout (FD1) и stderr (FD2) отправляются на терминал.

При использовании пайпов и перенаправлений вы можете изменить способ передачи входных данных, а также выходных данных и ошибок.

Перенаправление вывода в файл

Как было сказано ранее, вывод (stdout) и ошибки (stderr) любой программы отправляются на терминал.

Посмотрите на приведенный ниже пример.

Я выполняю команду uname -mrs и перенаправляю вывод в файл с именем uname.log.

Как я уже упоминал, одинарный оператор перенаправления (>) будет заменять содержимое файла, только если файл уже существует.

Однако, если вы хотите добавить содержимое вместо перезаписи в тот же файл, используйте двойной оператор перенаправления (т.е. >>).

Вы также можете использовать здесь дескриптор файла stdout(1).

Как работать с Stderr

Каждая программа генерирует как вывод, так и ошибку, и оба вывода отправляются на терминал.

Давайте рассмотрим простой пример выполнения команды ls, чтобы увидеть, как это работает.

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

Я получаю и ошибку, и вывод в терминале, как я уже говорил.

Я снова выполняю ту же команду ls, но на этот раз перенаправляю вывод в файл.

Как видно из вывода, оператор > перенаправляет stdout(1) в файл, но stderr(2) отправляется на терминал.

Обязательно использовать дескриптор файла для stderr(2) перед оператором перенаправления >, который будет отправлять ошибку только в файл.

Теперь stdout и stderr записываются в отдельные файлы.

Начиная с bash 4.4, вы также можете использовать знак &> для перенаправления и stdout, и stderr в один файл.

Что такое /dev/null?

Проще говоря, null отбрасывает все, что вы перенаправляете в него.

Почему нуль имеет значение при перенаправлении?

Вы можете задаться этим вопросом

. В некоторых случаях вы можете не выводить и не сохранять stdout или stderr.

Перенаправление ввода в Bash

Подобно тому, как вы перенаправляете вывод и ошибку в файл, вы также можете передавать входные данные команде с помощью оператора перенаправления ввода (<).

Давайте начнем с простой программы подсчета слов.

Здесь я перенаправляю содержимое файла itisgood.txt в программу подсчета слов, чтобы найти количество строк.

Вы также можете передать дескриптор файла stdin (0) при перенаправлении ввода.

Вы можете комбинировать операторы перенаправления ввода и вывода, как показано ниже.

Перенаправление ввода будет использоваться вместе с циклом while для чтения содержимого файла построчно.

Взгляните на приведенный ниже пример.

Я передаю файл /etc/passwd в качестве входных данных команде while.

Здесь команда read прочитает строку за строкой и сохранит ее в переменной VAL, а далее в цикле будет записано условие для проверки, доступен ли пользователь.

Сохраните файл и закройте его.

Это не самый оптимальный способ решения задачи поиска пользователя, но для демонстрационных целей сойдет.

Теперь сделайте скрипт исполняемым и запустите его:

Заключение


Есть несколько способов, которыми вы можете достичь этого, и в этом руководстве я покажу вам, как вы можете переименовывать файлы в Linux.

1) Переименование файлов с помощью команды mv

Синтаксис довольно прост.

Синтаксис

Я создал новую папку в моем домашнем каталоге под названием files.

В папке у меня есть документ с именем file1.txt.

Чтобы переименовать файл file1.txt в file2.txt, команда будет следующая:

Вы можете проверить результаты, используя команду ls

Чтобы получить подробный вывод, добавьте флаг -v

Если файл находится по пути к файлу, например, /home/winnie/file1.txt, синтаксис будет такой:

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

2) Переименуйте несколько файлов с помощью команды rename

Команда rename также может использоваться для переименования нескольких файлов из одного формата в другой.

Например, у меня есть 5 файлов: file1.txt, file2.txt, file3.txt, file4.txt и file5.txt

Чтобы переименовать их все файлы (* .txt) в pdf (* .pdf), запустите

Подстановочный знак означает, что все файлы будут затронуты.

Чтобы изменить имена файлов с строчных на заглавные:

В приведенном выше случае все строчные png-файлы будут преобразованы в верхний регистр

Для просмотра справочной страницы rename выполните:

3) Использование Metamorphose2 GUI tool

Прежде всего, зайдите на сайт Metamorphose и выберите установщик вашего дистрибутива.


На скриншоте выше видно, что присутствует русскоязычный вариант программы.

Доступны несколько вариантов установки, например, Файлы Debian для Ubuntu и Debian и RPM для дистрибутивов на основе RedHat, таких как CentOS.

После загрузки используйте команду dpkg для установки:

После успешной установки Metamorphose2 запустите его на терминале, выполнив

Выберите нужный язык и нажмите кнопку «ОК»


Нажмите на вкладку renamer.

Появится окно, подобное приведенному ниже.

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


Затем нажмите на вкладку «Picker» и выберите папку, содержащую файлы, которые вы хотите переименовать. Выделите файлы.


После этого снова нажмите на вкладку «Renamer» и на этот раз определите правила переименования.

В приведенном ниже примере я заменяю «file» на «doc».


Нижний раздел дает вам предварительный просмотр того, как ваши файлы будут переименованы.

Когда все будет выполнено, нажмите кнопку «go»

3) Использование инструмента Pyrenamer GUI

Для установки в Ubuntu запустите:

Для запуска Pyrenamer запустите

После запуска прокрутите вниз до своего каталога и выберите файлы, которые вы хотите переименовать.

Далее выберите действия, которые вы хотите применить.

В моем случае я заменю расширение txt на pdf.


Чтобы изменения вступили в силу, я наконец нажму «Rename».

Читайте также: