수정된 svn 파일을 모두 찾아 수정된 파일을 동일한 폴더 구조에 복사합니다.

수정된 svn 파일을 모두 찾아 수정된 파일을 동일한 폴더 구조에 복사합니다.

svn st | grep ^M명령을 사용하여 수정된 모든 svn 파일을 얻습니다.

M       student/includes/class_student_promotion.php
M       student/includes/class_student_report.php
M       student/resources/js/student_co_scholistic_activities.js
M       staff/php/edit_staff_details.php
M       library/includes/class_book_return.php
M       library/includes/class_book_item_stock_entry.php
M       library/includes/class_library_common_function.php
M       library/includes/auto_book_name_list.php
M       library/includes/class_book_issue.php
M       library/php/book_item_details_entry.php
M       includes/connection.php
M       includes/links.php
M       staff_student/php/student_time_table.php
M       assignment/php/ajax_created_assignment_report.php
M       assignment/php/ajax_submitted_assignment_report.php
M       student_attendance/php/date_wise_attendance_summary_report.php
M       student_attendance/resources/js/holiday_master.js

내 요구 사항은 출력에 나열된 파일을 동일한 폴더 구조에 복사하는 것입니다. 생성하려는 폴더를 포함시키고 svn st그 안에 나열된 파일을 복사하기만 하면 됩니다.

이 명령

cp `svn st | ack '^M' | cut -b 8-` backup

수정된 모든 파일을 디렉토리에 복사하는 것은 가능하지만 수정된 파일을 저장해야 하는 폴더도 생성되어야 한다는 것이 예상됩니다.

답변1

폴더가 디렉터리를 참조하고 파일 및 디렉터리 이름에 공백이나 특수 문자가 없다고 가정합니다.

svn st | ack '^M' | cut -b 8- | cpio -pdmv backup

cpio통과 모드( ) 입니다 -p. 표준 입력에서 복사된 파일 이름 목록을 사용합니다. 디렉토리를 생성하고, 수정 시간을 보존하고, 장황하게 만들 수 -d있도록 허용합니다 . stdin의 모든 파일 이름은 대상 디렉토리에 복사 되고-m-vstudent/includes/class_student_promotion.phpbackup/student/includes/class_student_promotion.php

관련 정보