orig
와 이라는 두 개의 디렉토리가 있다고 가정해 보겠습니다 backup
. 원본에는 이 파일이 포함되어 있습니다 foo
. 파일을 백업 디렉터리에 복사하고 싶지만 foo
확장자는 .txt
.
답변1
cp /path/to/orig/foo /path/to/backup/foo.txt
cp
소스 파일을 첫 번째 인수로, 대상 파일을 두 번째 인수로 사용합니다. 허용되는 대상 디렉터리를 간단히 지정하는 데 사용할 수 있지만 대상 파일의 이름도 바뀌도록 전체 경로를 지정할 수도 있습니다.
이 cp
명령에는 소스 파일과 대상의 두 가지 호출 방법이 있습니다.목차, 소스 파일 및 대상 포함문서. 매뉴얼의 명령 요약 섹션에는 다음이 반영되어 있습니다( man cp
).
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
답변2
비밀은 파일 확장자가 없다는 것을 깨닫는 것입니다. 파일 확장자는 CP/M의 잘못된 복제품인 MS_DOS에서 채택한 CP/M 개념입니다. 유닉스에는 그것들이 없으며 단지 이름의 일부일뿐입니다. 그러나 이 문제를 해결하는 데 도움이 되는 도구가 있습니다.
basename
: 기본 이름(접미사 없이)을 얻는 데 사용할 수 있습니다.rename
: (Larry Wall 버전) 파일 이름을 바꾸는 데 적합합니다.
당신이 원하는 것을 위해.
( fileName=foo; cp -T "/path/to/orig/${fileName}" "/path/to/backup/${fileName}.txt" )
안전을 위해 이 옵션을 추가했습니다 -T
. 생략할 수 있습니다(모든 사람이 cp
이 옵션을 갖고 있는 것은 아닙니다. 그러나 실수를 하면(두 번째 매개변수에 디렉토리 지정), 이 옵션이 없으면 파일이 이 디렉토리에 복사됩니다.