쉘 명령을 사용하여 폴더 안의 파일 이름을 바꾸는 방법은 무엇입니까?


8

에 파일이 some/long/path/to/file/myfiel.txt있습니다.

이름을로 바꾸고 싶습니다 some/long/path/to/file/myfile.txt.

현재 나는 그것을 사용 mv some/long/path/to/file/myfiel.txt some/long/path/to/file/myfile.txt하지만 경로를 두 번 입력하는 것은 효과적이지 않습니다 (탭 완성으로도).

어떻게하면 더 빨리 할 수 ​​있습니까? (파일 이름 세그먼트 만 변경하는 함수를 작성할 수는 있지만 계획은 B입니다).

답변:


11

단일 명령으로이 작업을 수행하려면 다음과 같이하면됩니다.

mv some/long/path/to/file/{myfiel.txt,myfile.txt}

다음은 다음과 같은 작업을 수행 할 수있는 오타 일 경우 전체 파일 이름의 예입니다.

mv some/long/path/to/file/myfi{el,le}.txt

둘 다 전체 명령으로 확장 되며이를 괄호 확장 이라고 합니다. zsh지원합니다 .


세상에, 이것은 많은 가능성을 열어줍니다. 감사!
Leonid Shevtsov

5

몇 가지 옵션이 있습니다.

디렉토리로 변경하십시오.

cd /home/long/path
mv file1 file2
cd -

디렉토리 스택을 사용하여 디렉토리를 변경하십시오.

pushd /some/long/path
mv file1 file2
popd

서브 쉘을 사용하여 디렉토리로 변경하십시오.

( 
  cd /some/long/path
  mv file1 file2
)   # no need to change back

괄호 확장 사용 :

mv /some/long/path/{file1,file2}

변수를 사용하십시오.

D=/some/long/path
mv "$D/file1" "$D/file2"

경로에 공백이 있으면 마지막 접근 방식이 중단된다는 점에 유의하십시오.
slhck

@slhck 공백이 있으면 모든 접근 방식이 중단됩니다.
tylerl

1
아니요, 올바르게 입력하면 입력하지 않습니다. 확장시 변수 만 mv에 대한 여러 인수처럼 보입니다.
slhck

@slhck 거기 당신은 간다.
tylerl

3

디렉토리로 변경하고 파일을 이동 한 후 이전 디렉토리로 다시 변경하십시오. 이렇게 :

cd some/long/path/to/file
mv myfiel.txt myfile.txt
cd -

1

서브 쉘 방법을 사용할 때 나는 한 줄에서 그렇게하는 경향이 있습니다.

(cd /some/long/path ; mv myfiel myfile )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.