mv를 호출할 때 디렉토리 경로를 포함하는 빠른 방법은 무엇입니까? [복사]

mv를 호출할 때 디렉토리 경로를 포함하는 빠른 방법은 무엇입니까? [복사]

일반적으로 나는 Rails 디렉토리의 루트에서 작업하며 파일을 이동하려고 할 때마다 동일한 경로를 두 번 탐색합니다.

mv app/views/layouts/application.html.erb app/views/layouts/application.html.haml

haml은 현재 있는 디렉터리를 수정하지 않고 디렉터리를 변경하지 않고 파일 이름을 변경해야 하는 가능한 예 중 하나일 뿐입니다. 이것을 달성할 수 있는 방법이 있나요?

답변1

사용버팀대 확장:

mv very/long/path/to/filename.{old,new}

으로 확장될 예정입니다.

mv very/long/path/to/filename.old very/long/path/to/filename.new

답변2

특정 디렉토리에서 작업 중인 경우 일시적으로 해당 디렉토리로 전환할 수 있습니다.

pushd app/views/layouts
mv application.html.erb application.html.haml
popd

Linux에서는 다음을 사용할 수 있습니다.rename유틸리티( rename.ulDebian, Ubuntu 및 그 파생 버전에서 호출됨)는 파일 이름의 일부(디렉토리 부분에 위치할 수 있음)를 변경하는 데 사용됩니다. in rename foo bar path/to/file의 첫 번째 항목을 로 변경합니다 . 파일 이름에 첫 번째 문자열이 포함되어 있지 않으면 파일은 그대로 유지됩니다.foopath/to/filebar

rename .erb .haml app/views/layouts/application.html.erb
rename .erb .haml app/views/layouts/*.html.erb       # do several in one go
rename .erb .haml app/views/layouts/application.*    # never mind if application.js and application.html.gz also exist

공통 어간을 공유하는 명령줄에 여러 연속 단어가 있는 경우 중괄호 확장을 사용할 수 있습니다.

mv app/views/layouts/application.html.{erb,haml}

답변3

cd서브셸의 디렉터리에서 이 작업을 수행할 수 있습니다 .

(cd app/views/layouts && mv application.html.erb application.html.haml)

여기서 대괄호는 새 쉘 프로세스에서 명령을 실행합니다 bash.

답변4

다음과 같이 함수를 정의할 수 있습니다.

mv-rename () {
  mv -- "${1}" "$(dirname -- "${1}")/${2}"
}

용법:

mv-rename app/views/layouts/application.html.erb application.html.haml

관련 정보