Эквивалентная команда разделения / замена, которая дает общее количество частей/частей?

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

Т.е. если бы кто-то работает, их ферма сервера в Windows I не хотела бы работать там. Так "Делают Вас, парни преимущественно запускают Windows?" Очень допустимый вопрос. Для администратора окон противоположный вопрос может быть актуальным.;)

0
задан 23 November 2010 в 13:48
2 ответа

если необходимо полностью определить "число части", со сгенерированных "имен" файлов части можно использовать "-d" и иметь суффиксный аргумент, чтобы быть именем каталога, где "файлы части" должны быть сгенерированы. Используя "-a" можно указать количество цифр, которые будут использоваться для генерации суффиксных имен.

пример: разделите файл "cfg.pm", 3 строки на выходной файл; используйте 3 цифры для сгенерированных суффиксов (удостоверяющийся, что пространство имен не исчерпывается); используйте суффиксы только для числа; обманите разделение для генерации имен файлов только для цифры путем определения каталога как префикса

mkdir ./s
split -a 3 -l 3 -d cfg.pm s/

после этого,

ls s | tail -1

неявно даст Вам количество сгенерированных файлов

ls s|tail -1
414
2
ответ дан 4 December 2019 в 15:03

Поднимание из ответа adirau:

Если Вашей системе назвали сценарий Perl rename (и это - версия, которая будет поддерживать выполнение этого), можно переименовать файлы так, чтобы каждое число было увеличено одним, и имейте префикс и суффикс:

count=$(($(ls s | tail -n 1) + 1))
rename "my \$n=sprintf(\"%03d\", \$_+1); my \$c=sprintf(\"%03d\", $count); s/.*/prefix\${n}of\${c}/" *

Это переименовало бы файлы от:

000
001
002

кому:

prefix001of003
prefix002of003
prefix003of003

Это - объем того сценария Perl, между прочим:

use strict;

use Getopt::Long;
Getopt::Long::Configure('bundling');

my ($verbose, $no_act, $force, $op);

die "Usage: rename [-v] [-n] [-f] perlexpr [filenames]\n"
    unless GetOptions(
        'v|verbose' => \$verbose,
        'n|no-act'  => \$no_act,
        'f|force'   => \$force,
    ) and $op = shift;

$verbose++ if $no_act;

if (!@ARGV) {
    print "reading filenames from STDIN\n" if $verbose;
    @ARGV = <STDIN>;
    chop(@ARGV);
}
for (@ARGV) {
    my $was = $_;
    eval $op;
    die $@ if $@;
    next if $was eq $_; # ignore quietly
    if (-e $_ and !$force)
    {
        warn  "$was not renamed: $_ already exists\n";
    }
    elsif ($no_act or rename $was, $_)
    {
        print "$was renamed as $_\n" if $verbose;
    }
    else
    {
        warn  "Can't rename $was $_: $!\n";
    }
}
0
ответ дан 4 December 2019 в 15:03

Теги

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