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
允许它创建目录、-m
保留修改时间并-v
使其变得冗长。 stdin 上的任何文件名都会被复制到目标目录,student/includes/class_student_promotion.php
将被复制到backup/student/includes/class_student_promotion.php