종종 나는 파일을 이동하고 싶을 때마다 동일한 경로를 두 번 탐색하는 레일스 디렉토리의 루트에서 작업할 것입니다.
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.ul
Debian, Ubuntu 및 파생 제품에서 호출됨)를 사용하여 파일 이름의 일부(디렉토리 부분에 있을 수 있음)를 변경합니다. in rename foo bar path/to/file
의 첫 번째 발생을 로 변경 합니다 . 파일 이름에 첫 번째 문자열이 포함되어 있지 않으면 파일은 그대로 유지됩니다.foo
path/to/file
bar
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