変更された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

関連情報