유닉스에서 파일 이름을 바꾸는 방법을 알고 있습니다.
$ 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
.