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