Переименование файлов без расширений

Переименование файлов без расширений

У меня есть ряд файлов с именами KLLxxx( xпредставляет собой числа). Это текстовые файлы, но у них нет расширения файла. Просто файлы, в которых есть , KLLза которыми следуют три цифры. Я хочу, чтобы все они заканчивались расширением файла .fastq. Например, KLL123-> KLL123.fastq.

Итак, я попробовал использовать эту команду

mv KLL* KLL*.fastq

Но я продолжаю получать сообщение об ошибке:

mv: target 'KLL067.fastq' is not a directory

Я знаю о функции команды rename, но я никогда раньше не использовал Perl, поэтому я не знаю, как к этому подойти. Я знаю, что это базовый вопрос, но это мой первый опыт работы с Linux.

решение1

prename... переименовать с помощью выражений Perl. Следующая команда берет список файлов (KLL*) и для каждого из них берет полное имя KLL плюс три числа ( KLL\d{3})) и сохраняет это в специальной именованной $1переменной. sв начале выражения означает «заменить» то, что находится между первыми двумя, //тем, что находится между вторым набором, который является полным именем файла, $1и добавить .fastqк нему.

prename 's/(KLL\d{3})/$1.fastq/' KLL*

решение2

findДля этого выполните следующую команду в каталоге, который вы просматриваете:

find . -name 'KLL[0-9][0-9][0-9]' -exec sh -c 'mv $0 $0.fastq' {} \;

Который добавит расширение .fastqк любому имени файла, начинающемуся с и KLLследующим за ним трем цифрам.

решение3

Здесь много возможных решений, это должно быть одно из них:

for f in KLL*; do mv "$f" "$f.fastq"; done

Связанный контент