
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