한 줄 명령을 사용하여 여러 파일 확장자를 변경합니다.

한 줄 명령을 사용하여 여러 파일 확장자를 변경합니다.

이름에 여러 확장명이 포함된 파일이 있습니다.

$ ls -r
File1_345.R.12345
File1_3.234.R.6789
File1_2345.R.2345
File1_12345.R.12345
$

기존 확장자를 모두 제거하고 로 바꾸려면 이름을 바꿔야 합니다 .txt. 출력은 다음과 같습니다.

$ ls -r
File1_345.txt
File1_3.txt
File1_2345.txt
File1_12345.txt

find 및 xargs 명령을 사용할 수 있습니까?

답변1

모든 확장 프로그램(이후의 모든 항목)을 제거하려는 경우첫 번째점) 각 파일 이름에서

$ for f in *
do
    mv -- "$f" "${f%%.*}.txt"
done

물론, 정말로 이 작업을 한 줄로 하고 싶다면 위의 내용을 접으면 됩니다.

$ for f in *; do mv -- "$f" "${f%%.*}.txt"; done

답변2

GNU Parallel을 사용하여 이 작업을 수행할 수 있습니다.

find ... | parallel mv {} '{=s/\..*//=}'.txt

답변3

rename이러한 작업에는 이 도구(예: Ubuntu의 Larry Wall)를 사용하는 것이 좋습니다 .

rename --verbose 's/\..*$/.txt/' File*
# replaces everything after the first dot.

또는 보다 구체적인 정규 표현식을 사용하세요.'s/\.R\.[0-9]+$/.txt/'

관련 정보