Изменение расширения нескольких файлов в Ubuntu 12.04

В Nautilus -> Preferences выберите следующий

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

1
задан 16 August 2013 в 03:50

5 ответов

Команда rename уже установлена, вам больше не нужно ничего добавлять.

rename принимает Perl-код в качестве своего первого аргумента. Наиболее конкретные варианты переименования состоят из замены регулярного выражения: s/REGEXP/REPLACEMENT/. Чтобы удалить существующее расширение, замените все, начиная с последнего символа ..

rename 's/\.[^.]*$/.txt/' /path/to/directory/*

Если ваши файлы не имеют расширения (нет имени . в их имени), вы можете использовать $ (который соответствует концу имени файла) в качестве regexp или добавляет .txt к имени.

rename '$_ = "$_.txt"'  /path/to/directory/*

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

5
ответ дан 24 May 2018 в 19:00
  • 1
    Не знал о переименовании. Это определенно более элегантно, чем мое решение. +1 – Glutanimate 15 August 2013 в 23:31
  • 2
    Я хотел бы использовать это решение, но когда я его запустил, он говорит «rename: command not found». Что я делаю не так? – Andrew Martin 16 August 2013 в 01:39
  • 3
    @AndrewMartin Это действительно странно. О, эта команда является частью пакета perl, который по умолчанию не может быть установлен при установке сервера. Но даже если perl не установлен, вы должны иметь команду rename с другим синтаксисом (что не так полезно для этого вопроса). – Gilles 16 August 2013 в 01:49
  • 4
    Я попытался установить perl, но, видимо, он уже установлен. Есть ли у вас какие-либо другие предложения о том, как работать с переименованием? – Andrew Martin 16 August 2013 в 03:36
  • 5
    @AndrewMartin Что-то не так с вашей системой. Что показывает ls -l /usr/bin/*rename* /etc/alternatives/rename? Как насчет type rename perl и echo $PATH? – Gilles 16 August 2013 в 03:38

Я думаю, вы можете использовать этот простой скрипт bash

rename_ext_script.sh

#!/bin/bash
for file in *
do
  mv -- "${file}" "${file%.*}.txt"
done

этот скрипт работает для обоих случаев с расширением или без

1
ответ дан 24 May 2018 в 19:00

GUI-решение

Обзор

В Ubuntu Software Center есть действительно простой в использовании и мощный инструмент графического интерфейса для переименования партий файлов, pyRenamer

Обзор

sudo apt-get install pyrenamer

или

Скриншоты

[ ! d13]

1
ответ дан 24 May 2018 в 19:00
  • 1
    Спасибо за Ваш ответ. Не могли бы вы рассказать нам, как использовать pyrename для изменения расширения всех файлов в каталоге? То есть какие шаблоны вы бы использовали? – Glutanimate 15 August 2013 в 23:47
  • 2
    Спасибо за это, но я должен был указать, что я не могу использовать графический интерфейс (доступ к удаленной виртуальной машине без GUI) – Andrew Martin 16 August 2013 в 01:40

У меня есть этот скрипт. Я знаю, что это не манекен-доказывание, а именно при обработке файлов с пробелами. Вот почему я запускаю детокс в начале.

#!/bin/bash
#   detox * 
# uncomment if you want to get rid of spaces and funny characters
    script=$(basename $0)
if  [ -z "$1" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
    clear   
    echo "Script for adding an extension to files without extension"
    echo "---------------------------------------------------------"
    echo -e "\n Usage:"
    echo -e "   $script extension\n"
    echo -e "Exampli gratia: \n The command:"
    echo "      $script txt"
    echo -e "   will rename:\n      FileWithoutExtension -> FileWithoutExtension.txt\n"

else
for file in $(ls -p -I '*.*' | grep -v '/$') # excludes direcotires
    do 
    mv -iv "$file" "$file.$1"
    done
fi
0
ответ дан 24 May 2018 в 19:00

Если у вас есть куча файлов без расширений вообще (например, ./out_1, ./out_2, out_3, ...):

cd YOUR_DIRECTORY_HERE
ls | xargs -i{} mv {} {}.YOUR_EXTENSION_HERE

example

0
ответ дан 24 May 2018 в 19:00

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

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