2013-03-05 24 views
5

Trong git, chúng tôi có thể sử dụng * để chỉ định tên tệp, như *.jpg, *.*, nhưng về thư mục thì sao?Đường dẫn Git khớp với bất kỳ tên thư mục nào

Có phương pháp nào để chỉ định tất cả thư mục không?

này không hoạt động:

git rm firstdirectory/*/thirddirectory 

Các * không làm "tất cả các thư mục" có hiệu lực.

Trả lời

3

Lệnh của bạn không hoạt động vì bạn chỉ định thư mục để git. shell của bạn làm việc mở rộng chính xác, nhưng cuối cùng thì git nhận git rm firstdirectory/somedir/thirddirectory, mà git không thích (git rm hy vọng files)

Để làm cho công việc lệnh của bạn, sử dụng -r cờ, sau đó git chấp nhận thư mục:

git rm -r firstdirectory/*/thirddirectory 
0

Việc mở rộng biểu thức tổng thể bạn mô tả không được thực hiện bởi git mà theo trình bao. Bạn có thể thấy điều này nếu bạn làm điều gì đó như echo *. Lệnh này nhận được một danh sách các đối số là các tên tệp - không phải là một đối số duy nhất có dấu hoa thị.

Trong trường hợp của bạn, find . -ipath có lẽ là cách hữu ích nhất để xác định đường dẫn bạn cần. Bạn có thể muốn thêm -type d để chỉ tìm nạp thư mục. tìm thấy có một số tùy chọn để chọn đối tượng phù hợp. Sau đó, bạn có thể cấp dữ liệu này vào xargs để làm việc với git. Ví dụ:

find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm 
Các vấn đề liên quan