이름에 여러 확장명이 포함된 파일이 있습니다.
$ 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/'