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

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

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

관련 정보