mv
깊은 디렉토리에 있는 다른 파일의 이름을 바꿔야 하는 경우가 종종 있습니다 .
mv /a/long/path/to/a/file.txt /a/long/path/to/a/file.txt.bak
하지만 전체 경로 이름을 다시 입력하고 싶지 않습니다. 사용할 수 있는 간단한 약어나 별칭이 있나요? 즉:
$ mv /a/long/path/to/a/file.txt file.txt.bak
$ ls /a/long/path/to/a/file.txt.bak
a/long/path/to/a/file.txt.bak
(참고: 이는 다른 시간에 다른 디렉터리에 있는 간단한 단일 파일 이름 바꾸기를 위한 것입니다.대량 이름 바꾸기)
답변1
사용하다버팀대 확장:
mv /a/long/path/to/a/file.txt{,.bak}
그러면 /a/long/path/to/a/file.txt
빈 접미사의 이름 이 /a/long/path/to/a/file.txt
with suffix 로 변경됩니다 .bak
.
답변2
아마도 그림과 같이 중괄호 확장을 사용하겠지만프레디의 대답, 둘 다 대화식을 사용할 bash
수 있습니다zsh
역사적 확장, 표시기를 사용하여 #$
현재 줄에서 지금까지 입력한 마지막 단어를 나타냅니다.
mv /a/long/path/to/a/file.txt !#$.bak
답변3
기본적인 질문일 수 있지만 기존 질문/답변을 찾을 수 없습니다. 내가 만든 간단한 솔루션은 ~./bash_functions
다음 기능입니다.
#/home/user/.bash_functions
function mv-rn() {
mv $1 $(dirname $1)/${2}
}
그래서 지금:
$ mv-rn /a/long/path/to/a/file.txt file.txt.bak
$ ls /a/long/path/to/a/file.txt.bak
a/long/path/to/a/file.txt.bak
(**참고, 위 함수가 별칭으로 인식되도록 하려면 ~/.bashrc에 이를 포함해야 합니다.)
# Function definitions.
if [ -f ~/.bash_functions ]; then
. ~/.bash_functions
fi
답변4
(cd /a/long/path/to/a && mv file.txt file.txt.bak)
&&
cd가 성공한 경우에만 mv가 실행되는지 확인하세요 . 대괄호는 명령이 하위 쉘에서 실행된다는 것을 의미하므로 cd는 기존 쉘의 작업 디렉토리를 변경하지 않습니다.