
У меня есть ряд файлов с именами 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