Как массовое добавление расширения файла?

Что вы хотите - это libwnck (если вас просто интересуют окна) или libbamf (если вас интересуют окна и приложения, которые им принадлежат).

1
задан 19 June 2014 в 19:45

4 ответа

Если у вас более сложная иерархия, вам потребуется немного более сложный подход. Вы можете использовать опцию bash globstar, которая позволяет ** сопоставлять ноль или более каталогов и подкаталогов, или вы можете использовать find.

globstar
shopt -s globstar
for f in **/*; do [ -f "$f" ] && mv "$f" "$f".jpg; done
[ -f "$f" ] & гарантирует, что mv команда запускается только в файлах, а не в каталогах. find
find . -type f -print0 | xargs -0 -I{} mv "{}" "{}".jpg
-type f гарантирует, что мы будем находить файлы и каталоги, а print0 заставляет find печатать свой вывод, разделенный нулевым символом (\0) вместо строк новой строки. Это гарантирует, что мы имеем дело с именами файлов, содержащими пробелы или символы новой строки или другие странности. xargs берет список ввода и запускает указанную команду. Флаг -0 сообщает, что он ожидает ввода с нулевым разделением, а -I{} будет заменять каждый экземпляр {} на все входные записи (файлы в этом случае).
7
ответ дан 24 May 2018 в 06:29
  • 1
    Благодарим вас за показ «Путь Linux». Этот метод поиска оказывается довольно гибким. – Ray Foss 21 January 2018 в 09:21
  • 2
    Чтобы сделать расширение заглавным без добавления, используя аналогичный метод, если ни один файл не назван с именем%: find -name *.jpg -print0 | xargs -0 -I{} sh -c "printf \"'{}' \" && printf \"'{}\" | head -c-4 && printf \".JPG'\0\"" | xargs -0 -I{} sh -c "mv {}" – Ray Foss 21 January 2018 в 10:05

Я бы посоветовал вам использовать программу под названием pyrenamer.

Откройте ее, а в шаблоне имени переименованного файла введите {1}.jpg.

4
ответ дан 24 May 2018 в 06:29

Перед тем, как попробовать это

, обратитесь к man rename. Это будет работать как прелесть.

В терминале:

cd /path/to/exported/imgs/folder/
rename  's/(\w+)$/$1\.jpg/' *

Пожалуйста, измените «jpg» на все, что вам нужно.

rename может использовать perl expresions .. ваш лучший друг

На первой строке вы ввели каталог ваших файлов

cd /path/to/exported/imgs/folder/

s перед выражением указывает на замещение

rename 's/(\w+)$/$1\.jpg/' *

Затем будет искать любой файл с буквенно-цифровым и подчёркнутым именем, но без расширения

rename 's/(\w+)$/$1\.jpg/' *

И заменить добавьте к нему. dot jpg

rename 's/(\w+)$/$1\.jpg/' *

Наконец, применитесь к любому файлу в папке первой строки

rename 's/(\w+)$/$1\.jpg/' *
4
ответ дан 24 May 2018 в 06:29
  • 1
    Это работало для меня как прелесть. Спасибо! – Indu Pillai 7 December 2016 в 14:17

Я часто сталкиваюсь с этой ситуацией с системами администрирования, особенно при работе с именами файлов, созданных приложениями Windows. Чтобы добавить .jpg расширения в именах файлов без какого-либо расширения, рассмотрите этот список команд.

find ./example -type f -name '*' -print0 | xargs -0 -I'{}' mv '{}' '{}'.jpg

find -print0 генерирует NULL-символы для разделителей, xargs -0 предназначен для принятия этих разделителей NULL. Это также сделает это для любых подкаталогов, поэтому обязательно замените этот путь ./example.

rename - отличная команда, но она специфична для дистрибутива как в реализации, так и в спецификации. Обычно я использую такие вещи, как rename в командной строке, но я всегда пишу в стандартах GNU utils для своих скриптов.

2
ответ дан 24 May 2018 в 06:29

Другие вопросы по тегам:

Похожие вопросы: