확장자가 ".old"인 파일이 여러 개 있습니다.
파일을 삭제하지 않고 ".old" 확장자를 제거하려면 어떻게 해야 합니까?
수동으로 수행할 수도 있지만 더 많은 작업이 필요합니다.
mv file1.key.old file1.key
mv file2.pub.old file2.pub
mv file3.jpg.old file3.jpg
mv file4.jpg.old file4.jpg
(etc...)
이 명령을 다른 확장 프로그램에도 사용할 수 있나요?
예:
mv file1.MOV.mov file1.MOV
mv file2.MOV.mov file2.MOV
mv file3.MOV.mov file3.MOV
(etc...)
또는 더 나은:
mv file1.MOV.mov file1.mov
mv file2.MOV.mov file2.mov
mv file3.MOV.mov file3.mov
(etc...)
답변1
사용bash 매개변수 대체 메커니즘일치하는 접미사 패턴을 제거합니다.
for file in *.old; do
mv -- "$file" "${file%%.old}"
done
답변2
사용 중인 운영 체제를 지정하지 않았지만 많은 Linux 배포판에는 rename
이 목적으로 사용할 수 있는 명령이 있습니다. 실제로 완전히 다른 두 가지 명령이 있습니다 rename
. Debian 및 유사한 시스템은 하나의 명령을 제공하고 RedHat 및 유사한 시스템은 또 다른 명령을 제공하지만 여기서는 둘 중 하나가 작동합니다.
rename
Debian, Ubuntu 등을 기반으로 하는 Perl은 다음을 참조하세요.이름 책.
rename
Redhat 등 의 Util-Linux는 다음을 참조하세요.매뉴얼 이름 바꾸기.
Debian 및 유사한 시스템에서는 다음을 수행할 수 있습니다.
rename 's/\.old$//' *
또는:
rename s/.MOV.mov/.mov/ *.*
Redhat 및 유사한 플랫폼에서는 다음을 수행할 수 있습니다.
rename .old "" *
답변3
다음과 같은 다양한 이름 바꾸기 도구가 있습니다.http://file-folder-ren.sourceforge.net/
하지만 이름을 바꾸는 가장 빠른 방법은 다음과 같은 간단한 스크립트라고 생각합니다.
for i in *.old
do
mv -- "$i" "${i%.old}"
done
오류 검사는 없으며 대상 파일이 있는 경우 덮어쓸 수 있습니다.
답변4
이름 바꾸기 도구를 사용하는 대신 쉘(Bash) 프로그래밍으로 답변을 제한하려면 다음을 시도하십시오.
for oldname in *.old ; do
newname="${oldname%%.old}"
if [ -e "$newname" ] ; then
echo "Cannot rename $oldname because $newname exists." >&2
else
mv -- "$oldname" "$newname"
fi
done
$oldname
$newname
파일 이름에 공백이 포함될 수 있기 때문에 따옴표를 사용합니다 .