2009-05-12 27 views
12

Tôi đã tìm thấy đoạn mã này.Làm cách nào để xóa các tệp bị thiếu có dấu cách trong svn?

svn status | grep '\!' | awk '{print $2;}' | xargs svn rm 

Nó loại bỏ tất cả các file bị mất, nếu tôi hay ai đó xóa các tập tin bằng tay (thông qua các biên tập viên hoặc chúng được xóa qua hệ thống)

Nhưng mã hóa bash của tôi là không lớn, những gì nó thiếu là nó không hoạt động với các tệp có không gian trong đó.

svn rm Super\ Test.file 

Là cách chính xác để xóa tệp có dung lượng, nhưng tôi không biết cách sửa đổi đoạn mã ở trên để nó hoạt động. (hoặc nếu bạn có một đoạn mã khác)

Trả lời

18
svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done 
4

Bạn có thể 0 thoát và sử dụng cờ 0 đến xarg.

svn st | awk '/^!/ { sub("^! +", ""); printf "%s\0", $0 }' | xargs -0 svn rm 

Điều này có lợi thế khác trong các tệp có dấu ngoặc kép hoặc các ký tự đặc biệt khác sẽ không làm hỏng dòng lệnh xargs.

0

Với GNU awk, tôi có thể làm:

svn stat | awk -v FIELDWIDTHS="1 6 1000 1" -v ORS=$'\0' '$1 == "!" { print $3 }' | xargs -0 svn rm 
Các vấn đề liên quan