나는 유닉스 수업에 대한 소개를하고 있으며 최종 과제에 매달렸다. 스크립트가 실행될 때 입력되는 파일 이름의 파일 확장명을 변경하는 스크립트를 작성해야합니다. 새 파일 확장자는 스크립트가 실행될 때도 입력됩니다. 스크립트는 chExt1.sh를 호출합니다. 스크립트가 첫 번째 입력에 주어진 파일 확장자에 두 번째 입력 파일의 확장자를 변경하는 가정입니다유닉스에서 파일 확장명을 변경하십시오.
./chExt1.sh cpp aardvark.CPP
다음과 같이 스크립트의 우리의 첫 시도가 실행됩니다. 파일 이름에 어떤 파일 확장자가 주어 지거나 새 확장자로 제공되는 파일 확장자가 무엇인지는 중요하지 않으며 대문자를 소문자로만 변경하는 것도 아닙니다. 주어진 경우 희망에서 다음이 아주 명확하게하기 :
./chExt1.sh istink helpme.plEaSe
스크립트는 helpme.plEaSe가 helpme.istink을 변경합니다. 나는이 포럼과 구글을 검색해 보았고 내가 찾은 여러 가지 예를 시험해 보지 않았다. 아래는 내가 시도한 예제와 현재 가지고있는 예제 중 일부입니다. 현재
#!/bin/sh
fileExtension="$1"
shift
oldName="$2"
shift
newName=${oldName%%.*}${fileExtension}
echo $newName
에코는 작동하는지 확인 만하고, 나는 그것이 내가 그것을 저장하는 MV를 추가하는거야 작업을 진행합니다. 내가 시도 기타 :()로
newName=`${oldName%.*}`
newName=`${oldName#.*}`
sed 's/\.*//' $oldName > $newName
내가 사용한 나오지도 다른 일부를 찾을 수 없습니다하지만 그들은 백 슬래시을 많이 참여하고 * 거기에.. 내가 입력 할 파일 확장자를 알지 못해서 basename 명령을 시도하지 않았고 내가 본 예제는 당신이 제거하고 싶었던 것을 지정해야한다는 것을 요구했습니다. 내가 사용한 다른 견적을 모두 나열하지는 않았지만 많이 시도했습니다. 내 명령은 sed 명령을 사용하는 방법을 우리가 클래스에서 사용하는 방법을 알고 있어야하지만 내가 그것을하려고 할 때 나는 파일의 끝을 격리하지 않으며 나는 (그것이 너무 오래 걸리기 때문에) 그것을 믿는다. 전체 파일을 살펴보고 내가 찾은 것을 계속 한 이유가 무엇인지 찾고 있습니다. * 패턴으로. 당신이 줄 수있는 anyhelp 주셔서 감사합니다.
[man rename] (https://www.google.com/search?q=man+rename&oq=man+rename&aqs=chrome.0.57j60l3j65l2.2208&sourceid=chrome&ie=UTF-8) –
샘플 이름 바꾸기 -ns/\ .txt $/\. aaa/* .txt' –