2012-09-17 16 views
9

के बीच समन्वयन को ठीक करने के लिए रिकर्सिव स्पर्श मैं अपनी एक गलती की वजह से कमांड लाइन से निर्देशिका (और उपनिर्देशिका) में प्रत्येक फ़ाइल को छूने के लिए एक रास्ता तलाश रहा हूं, मेरा एक सिंक्रनाइज़ रेपो मेरा थोड़ा सा हो गया है मेरी विकास मशीनों पर कदम।कंप्यूटर

अब मैं कुछ अप्रिय वूडू के माध्यम से इसे एक मशीन पर एक स्वच्छ स्थिति में वापस लाने में कामयाब रहा हूं, इससे पहले कि मैं अगली सिंक करता हूं, मैं इस मशीन पर सब कुछ ठीक से प्राथमिकता देना चाहता हूं।

क्या सभी फाइलों को छूने का कोई आसान तरीका है?

या क्या मैं निर्देशिका की मैन्युअल सिंक बेहतर कर रहा हूं?

उत्तर

15

(मैं संदर्भ के लिए सिंक्रनाइज़ करने के लिए ड्रॉपबॉक्स का उपयोग कर रहा) आप xargs के साथ find इस्तेमाल कर सकते हैं वर्तमान या निर्दिष्ट निर्देशिका या नीचे में हर फ़ाइल को छूने के लिए: वर्तमान निर्देशिका के लिए

find . -print0 | xargs -0 touch 

। एक निर्दिष्ट निर्देशिका के लिए:

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

-print0xargs को -0 विकल्प के साथ find करने का विकल्प आदेश delimeter एक शून्य बनाकर रिक्त स्थान के साथ फ़ाइल नामों में मजबूत बनाते हैं।

संपादित करें:

जेरेमी जम्मू Starchar एक टिप्पणी में कहते हैं, ऊपर ही उपयुक्त है अगर आपके find और xargs जीएनयू toolchain का एक हिस्सा हैं। आप का उपयोग आप जीएनयू उपकरण withour एक प्रणाली पर हैं, तो हो सकता है:

find . -exec touch {} \; 

द्वारा संपादित dcgregorya:

एक बहुत बड़े डेटा सेट के खिलाफ यह करने के लिए हो रही है मैं इस आदेश होने के लिए मिल गया है (ज्यादा) और तेज।

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

सीमाएं फ़ोल्डरों को खोजने के लिए ढूंढती हैं तो फ़ोल्डर/* के खिलाफ स्पर्श निष्पादित करती हैं।

+2

या फिर आप उपयोग कर सकते हैं '-execdir' कार्रवाई:' पाते हैं। -execdir स्पर्श '{}' \; ' – chepner

+0

किसी को ध्यान रखना चाहिए कि '-print0' और xarg's' -0' ढूंढें जीएनयू एक्सटेंशन हैं और गैर-जीएनयू उपकरण श्रृंखलाओं पर मौजूद नहीं हो सकते हैं। 'ढूंढो। -exec स्पर्श {}; जब आवश्यक हो तो धीमे अधिक संगत है। –

0

तो यह सभी फ़ाइलों को छूने की मेरी तत्काल समस्या का समाधान है, चाहे वह ड्रॉपबॉक्स के साथ काम करे, देखना होगा।

निर्देशिका की जड़ में सवाल

find . -print -exec touch {} \; 

में (प्रिंट बाहरी है, लेकिन यह प्रतिक्रिया के लिए सहायक हो सकता है)

संबंधित मुद्दे