Переименовать файл 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».
Читайте также: