2012-09-17 26 views
9

Tôi đang tìm cách từ dòng lệnh để chạm vào mọi tệp trong thư mục (và thư mục con) do lỗi của tôi một kho lưu trữ được đồng bộ hóa của tôi đã nhận được một chút bước vào các máy phát triển của tôi.Cảm ứng đệ quy để sửa đồng bộ giữa các máy tính

Tôi đã thông qua một số voodoo khó chịu được đưa trở lại trạng thái sạch trên một máy, trước khi tôi thực hiện lần đồng bộ tiếp theo, tôi muốn ưu tiên mọi thứ trên máy tính này.

Có cách nào dễ dàng để chạm vào tất cả các tệp không?

Hoặc tôi có nên thực hiện đồng bộ hóa thủ công thư mục này không?

(Tôi đang sử dụng dropbox cho đồng bộ để tham khảo)

Trả lời

15

Bạn có thể sử dụng cùng với findxargs chạm vào mỗi tập tin trong thư mục hiện hành hoặc quy định hoặc dưới đây:

find . -print0 | xargs -0 touch 

cho thư mục hiện hành . Đối với một thư mục chỉ định:

find /path/to/dir -print0 | xargs -0 touch 

Các -print0 tùy chọn để find cùng với các tùy chọn để -0xargs làm cho lệnh mạnh mẽ để tìm tên tập tin với không gian bằng cách làm cho delimeter một NULL.

Edit:

Như Jeremy J Starchar nói trong một chú thích, ở trên là chỉ thích hợp nếu find của bạn và xargs là một phần của các toolchain GNU. Nếu bạn đang ở trên một hệ thống withour công cụ GNU bạn có thể sử dụng:

find . -exec touch {} \; 

Sửa bởi dcgregorya:

Phải làm điều này với một tập dữ liệu rất lớn, tôi đã tìm thấy lệnh này để được (nhiều) nhanh hơn.

find ./ -type d -print0 | xargs -I{} -0 bash -c "touch {}/*" 

Giới hạn tìm thấy thư mục sau đó thực hiện chạm vào thư mục/*.

+2

Hoặc bạn chỉ có thể sử dụng các action '-execdir':' find. -execdir touch '{}' \; ' – chepner

+0

Bạn nên lưu ý rằng' -print0' và xarg's '-0' là các phần mở rộng của GNU và có thể không xuất hiện trên các chuỗi công cụ không phải của GNU. 'tìm. -exec touch {}; 'tương thích chậm hơn khi cần thiết. –

0

Vì vậy, đây là giải pháp cho vấn đề trước mắt của tôi về việc chạm vào tất cả các tệp, cho dù nó hoạt động với dropbox sẽ phải được nhìn thấy.

Trong thư mục gốc của thư mục trong câu hỏi

find . -print -exec touch {} \; 

(in là không liên quan nhưng nó có thể hữu ích cho phản hồi)

Các vấn đề liên quan