Поиск по сайту:

Как переименовать скриншоты в Linux


Многие настольные системы Linux сохраняют снимки экрана с такими именами, как Screenshot from 2020-11-29 18-57-51.png. Часто вам действительно нужно было переименовать файлы во что-то более очевидное, например webinar1.png, webinar2.png и т. д. К счастью, переименовать кучу файлов очень легко в командной строке Linux.

Оболочка Bash очень универсальна и предоставляет различные способы оценки значений и раскрытия переменных. Одной из точных оценок является арифметическая оценка. Чтобы выполнить эту оценку, оберните свой арифметический оператор с помощью $ (( и )).

Оценка также может включать раскрытие переменных, например $sum, для преобразования в значение. Но для удобства любые переменные Bash, перечисленные между $ (( и )), раскрываются автоматически. Например, чтобы увеличить количество переменных на 1, вы можете ввести:

count=$(( count + 1 ))

Это то же самое, что набрать:

count=$(( $count + 1 ))

Арифметическое расширение поддерживает те же операторы, что и в других языках программирования, включая + и - для сложения и вычитания, * и / для умножения и деления и % для остатка. Вы также можете использовать ++ и -- для увеличения и уменьшения значения переменной. Проверьте справочную страницу для Bash и прокрутите вниз до АРИФМЕТИЧЕСКАЯ ОЦЕНКА, чтобы увидеть полный список поддерживаемых операторов и их приоритет.

Чтобы переименовать все мои скриншоты, мне нужно было написать эту однострочную команду Bash:

n=1; for f in Screenshot*.png; do mv -v "$f" webinar$n.png; n=$(( n + 1 )); done

Но что это делает?

Первая часть команды, n=1, инициализирует переменную n значением 1.

Затем я использую цикл for для работы со всеми файлами, которые начинаются с Screenshot и заканчиваются расширением .png. Обычно это все скриншоты, которые я сделал во время моего последнего вебинара. Если бы мне нужно было быть более точным, я мог бы включить дату в спецификацию этого файла, например Снимок экрана от 2020-11-29*.png. Обратная косая черта — это буквально экранирование для сохранения пробелов в имени файла.

Каждая итерация цикла for сохраняет имя файла в переменной f. Таким образом, команда mv mv -v \$f\ webinar$n.png переименовывает каждый файл в мои предпочтительные имена файлов, такие как webinar1.png , webinar2.png и т. д. Мне нужны кавычки вокруг расширения переменной $f, чтобы пробелы в Скриншоте из ГГГГ-ММ-ДД чч-мм-сс.png не вызывали проблем в моем mv. Если вы получаете сообщение об ошибке типа mv: target webinar1.png не является каталогом, возможно, вы не заключили в кавычки $f.

Наконец, я увеличиваю значение переменной n, чтобы оно было готово к следующей итерации цикла. Арифметическое расширение n=$ (( n + 1 )) увеличивает переменную n на 1.