여러(없음 포함) 파일 확장자 변경

여러(없음 포함) 파일 확장자 변경

일부 파일의 확장자가 .html 등이고 일부 파일은 그렇지 않은 파일 디렉터리가 있는 경우 해당 파일을 모두 .txt 등으로 변경하려면 어떻게 해야 합니까?

답변1

나는 이것이 당신에게 효과가 있을 것이라고 믿습니다(아마도 sed를 사용하는 더 우아한 접근 방식일 것입니다).

for file in *; do
  base=`echo "${file%.*}"`
  mv -- "${file}" "${base}.txt"
done

답변2

더 우아할 필요는 없지만 완전성을 위한 sed해결책은 다음과 같습니다.

for file in *; do
  mv "$file" "$(echo "$file" | sed 's/^\(.*\)\.\?.*$/\1.txt/')"
done

sed 비트는 파일 이름에서 마지막 점 앞의 모든 것을 잡고 점과 그 뒤의 모든 것을 ".txt"로 바꿉니다. 파일 이름에 점이 없으면 전체 파일 이름에 ".txt"가 추가됩니다.

어떤 방법을 사용하든 공백 등이 포함된 파일 이름을 처리하려면 변수 주변의 따옴표가 매우 중요합니다.

답변3

쉘에서 이들 모두의 이름을 바꾸려면 다음과 같습니다.

for file in *; do
  mv -- "${file}" "`basename -- "${file}"`.txt"
done

file확장을 결정하려면 유형을 테스트하기 위해 또는 기타 검사를 사용해야 할 수도 있습니다 .

관련 정보