1

У меня много файлов в подпапках. Они все похожи на.* .radiate, где * это просто число.

Есть ли способ переименовать их всех с помощью одной команды, чтобы просто in.radiate?

В Linux или MATLAB?

1 ответ1

1

Если есть более простой способ, я не знаю, но вот простой Perl-скрипт, который сделает эту работу за вас:

#!/usr/bin/perl
use warnings;
use strict;

my $oldname = '*.radiate';   # Pattern of old filename. Edit if desired.
my $newname = 'in.radiate';  # New filename. Edit if desired.

foreach my $folder1 (glob("*"))
{
    if (-d $folder1)
    {
        foreach my $folder2 (glob("$folder1/*"))
        {
            if (-d "$folder2")
            {
                print "Processing $folder2\n";
                system("mv $folder2/$oldname $folder2/$newname");
            }
        }
    }
}

Вставьте это в файл с именем, например, rename.pl в каталоге, где находятся все подкаталоги, и запустите его с помощью perl rename.pl .

В нем есть ошибка / функция, позволяющая узнать, не обрабатывается ли папка, которая обрабатывается, файлом .radiate .

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

РЕДАКТИРОВАТЬ: Обновлено, чтобы пересмотреть подкаталоги подкаталогов, поскольку я неправильно прочитал оригинальный вопрос. Протестировал его на моей машине, и он работает как задумано в Linux Mint 17 с Perl 5.18.2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .