दो निर्देशिकाओं की तुलना करना और पूर्ण पथ के साथ आउटपुट प्राप्त करना


1

दो निर्देशिकाओं की तुलना करने की कोशिश कर रहा था। एक निर्देशिका संदर्भ निर्देशिका (dir1) है और दूसरी निर्देशिका है जहां संशोधन (dir2) किए जा रहे हैं

मुझे dir1 की तुलना में dir2 में संशोधित या जोड़ी गई फ़ाइलों की सूची चाहिए।

मैंने rsync का उपयोग किया और परिणाम प्राप्त किया। लेकिन आउटपुट में पूर्ण पथ वाली फ़ाइलों की आवश्यकता है।

diff --breat --recursive / test / dir2 / reference / dir1

आउटपुट है

केवल in / test / dir2: king.txt

केवल / परीक्षण / dir2 / sdir2 में: abc.txt

केवल in / test / dir2: test1

केवल / परीक्षण / dir2 / sdir3 में: test.txt

और rsync का उपयोग कर

rsync -av --dry-run / test / dir2 / / reference / dir1

उत्पादन

वृद्धिशील फ़ाइल सूची भेजना

./

king.txt

test.txt

sdir2 /

sdir2 / abc.txt

test1 /

भेजे गए 52712 बाइट्स को 1339 बाइट्स 108102.00 बाइट्स / सेक प्राप्त हुए

कुल आकार 0 स्पीडअप 0.00 (DRY RUN) है

संपूर्ण पथ /test/dir2/king.txt के साथ सूची की आवश्यकता है और एक फ़ाइल में संग्रहीत किया जाना चाहिए।

सर्वश्रेष्ठ सादर, के.जे.

जवाबों:


1

अपनी ज़रूरतों से मेल खाने के लिए डिफरेंट आउटपुट को ट्विक करने के लिए काफी आसान होना चाहिए ... सिर्फ़ सेड के ज़रिए फ़र्क को पाइप करें।

sed -r -e 's/^.*Only in //' -e 's@: @/@'

हाय टिंक, धन्यवाद, इसने आउटपुट में अतिरिक्त "/" के साथ पूर्ण पथ के साथ आउटपुट भी दिया, यदि कमांड डायरेक्टरी आउटपुट के अंत में "/" के साथ समाप्त होता है:> /test/dir2//king.txt यदि कमांड नहीं चलता है निर्देशिका के अंत में कोई "/" है जो आउटपुट एकदम सही था।
कुमारजोह

2

आप बस के उत्पादन को पार्स कर सकते हैं diff:

diff --brief --recursive /test/dir2/ /reference/dir1/ | 
  gawk '(/Only/){print $3""$NF}' | sed 's/://'

सुनिश्चित करें कि आप /निर्देशिका नामों में अनुगामी शामिल हैं , यह समाधान उनसे अपेक्षा करता है। का उपयोग करें /test/dir2/और नहीं /test/dir2। इसके अलावा, यह काम नहीं करेगा यदि आपके फ़ाइल नामों में रिक्त स्थान हैं।


हाय टेर्डन, इनपुट के लिए धन्यवाद। इसने काम किया और मुझे निरपेक्ष मार्ग दिया।
कुमारजोह

@ user2119462 आपका स्वागत है। यदि यहां दिए गए जवाबों में से एक ने आपकी मदद की, तो कृपया इसे स्वीकार करें और / या इसे बढ़ाएं।
टेराडॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.