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
-v
student/includes/class_student_promotion.php
backup/student/includes/class_student_promotion.php