파일 확장자 없이 파일 이름 바꾸기

파일 확장자 없이 파일 이름 바꾸기

KLLxxx( x숫자를 나타냄) 이라는 이름의 일련의 파일이 있습니다 . 텍스트 파일이지만 파일 확장자가 없습니다. 그것은 단지 KLL파일 뒤에 세 자리 숫자가 오는 것일 뿐입니다. 나는 그것들이 모두 파일 확장자로 끝나길 원합니다 .fastq. KLL123-> 와 같은 KLL123.fastq.

그래서 이 명령을 사용해 보았습니다.

mv KLL* KLL*.fastq

하지만 계속 오류 메시지가 나타납니다.

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

이름 바꾸기 명령 기능에 대해 알고 있지만 이전에 Perl을 사용해 본 적이 없어서 이를 처리하는 방법을 모르겠습니다. 나는 이것이 기본적인 질문이라는 것을 알고 있지만 이것이 Linux를 처음 시도하는 것입니다.

답변1

prename...Perl 표현식을 사용하여 이름을 바꿉니다. 다음 명령은 파일 목록(KLL*)을 가져옵니다. 각 파일에 대해 KLL의 전체 이름과 세 개의 숫자( KLL\d{3}))를 가져와 특수 명명된 변수에 저장합니다 $1. s표현식 시작 부분에 있는 the는 처음 두 그룹 사이에 있는 항목을 //두 번째 그룹 사이에 있는 항목으로 "대체"한다는 의미입니다. 이는 전체 파일 이름 이고 여기에 $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

관련 정보