디렉토리 경로를 다시 입력하지 않고 파일 이름을 바꾸는 가장 빠른 방법 part——^ ^——this part——-^ ~/folder/subfolder/file두

유닉스에서 파일 이름을 바꾸는 방법을 알고 있습니다.

$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh

     ^-------this part------^    ^------this part-------^

~/folder/subfolder/file두 번 반복하는 데 시간이 너무 오래 걸립니다 .

더 빠른 방법이 있습니까?



답변

쉘 경우 지원 중괄호 확장은 (작동 csh, tcsh, ksh, zsh, bash, mksh, lksh, pdksh, yash중괄호 확장 호출하여 사용할 수 yash --brace-expand또는과 interative 쉘 설정 set -o brace-expand, 또는 fish) :

mv ~/folder/subfolder/file.{txt,sh}

답변

rename(util-linux 패키지의 일부)를 사용할 수도 있습니다 .

rename .txt .sh ~/folder/subfolder/file.txt

자세한 내용은 rename man 페이지 를 참조하십시오.


답변

위의 모든 것이 좋습니다. 이것은 또한 작동합니다 :

( cd ~/folder/subfolder && mv file.txt file.sh )

답변

아니요. 파일 이름을 바꾸려면 파일의 전체 경로를 제공해야합니다. 유일한 대안은 다음을 실행하기 전에 대상 폴더로 이동하는 것입니다 mv.

cd ~/folder/subfolder/
mv file.txt file.sh

또는 대상 디렉토리의 파일 이름을 바꾸는 작은 함수를 작성할 수 있습니다. 예를 들어, 다음 행을 쉘 초기화 파일에 추가하십시오 (사용중인 ~/.bashrc경우 bash).

lmv(){
    _path=$(dirname -- "$1")
    _target="${_path%/}/$2"
    mv -- "$1" "$_target"
}

그런 다음 새 터미널을 열거 나 실행 source ~/.bashrc하여 init 파일을 다시 읽습니다.

lmv ~/folder/subfolder/file.txt file.sh

답변

cuonglm의 대답의 유용성을 확장하기 만하면 (그의 해결책을 좋아할 때 신용을 얻지 마십시오) 그의 대답은 정답입니다.

유스 케이스는 종종 원격 위치 (실제 문제)에서 파일을 mv로 만들고 싶다는 것입니다. 예 : /folder/subfolder/configFile.dat TO configFile.dat.orig

이 형식의 명령 은 파일 확장자를 추가합니다 (원래 확장자를 대체하지 않음)

mv ~/folder/subfolder/file.txt{,.orig}

설명 : “{, .orig}”는 파일 이름 끝에있는 (아무것도) “(뭔가)”.orig “로 바꾸는 것을 의미합니다.

또는 파일 확장자제거 하려면 (이름 바꾸기를 취소하십시오)

mv ~/folder/subfolder/file.txt{.orig,}

참고 : “dir 경로를 다시 입력하지 않고 파일 이름을 바꾸는 가장 빠른 방법”에 대한 주제


답변

예. 당신이 사용하는 경우 bash, 당신이 할 sudo pushd ~/folder/subfolder/ && sudo mv ./file.txt ./file.sh && popd.

실제로는 더 크며를 수행 할 때 원래 디렉토리에 대한 액세스 권한을 잃으면 실패 할 수 있습니다 popd.