답변:
쉘 경우 지원 중괄호 확장은 (작동 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
.
rename
않기 때문에 더 나은 솔루션 이라고 생각 rename
하지 않습니다.
rename
(util-linux 패키지의 일부)를 사용할 수도 있습니다 .
rename .txt .sh ~/folder/subfolder/file.txt
자세한 내용은 rename man 페이지 를 참조하십시오.
{a,b}
기능에 의존하는 것보다 훨씬 좋은 방법 입니다.
rename
완전히 다른 펄 기반 프로그램입니다. 거기에을 사용 rename 's/txt$/sh/' ~/folder/subfolder/file.txt
합니다.
mmv
.
위의 모든 것이 좋습니다. 이것은 또한 작동합니다 :
( cd ~/folder/subfolder && mv file.txt file.sh )
sudo
부품 을 제거하면 작동합니다 .
sudo
않습니까?
sudo
해석 되기 때문일 것 ~
입니다.
sudo
는 mv
없습니다 cd
. CD가 내장 쉘 이유를 참조하십시오 그리고 당신은 할 수 없습니다.sudo
(
아니요. 파일 이름을 바꾸려면 파일의 전체 경로를 제공해야합니다. 유일한 대안은 다음을 실행하기 전에 대상 폴더로 이동하는 것입니다 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
lmv()
기능 +1 그 :) 몰랐
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
.
pushd
과 popd
여기가? 이보다 어떻게 더 나은 cd ~/folder/subfolder/ && sudo mv file.txt file.sh
가요?
pushd
popd
사용 cd
하고 다시 사용하는 것 cd -
입니다.
popd
보다 낫습니다 cd ../../
.
(cd /path/to/there && mv x y)
다음 사용 (서브 쉘과 함께)
sudo
전에 넣어서는 안됩니다 pushd
. 따라서 전체 명령은이어야합니다 pushd ...dir && sudo mv old new && popd
. 대안으로, (cd ...dir; sudo mv old new)
서브 쉘에서 실행하면 디렉토리 변경이 자동으로 처리되기 때문에 할 수 있습니다.