कई निर्देशिकाओं के बीच आम फाइलों का सेट खोजें?


9

मैं Drupal थीम्स की निर्देशिकाओं की तुलना करना चाहता हूँ। एक ड्रुपल थीम एक निर्देशिका है जो कई फ़ाइलों से बना है, और मैं यह पता लगाने की कोशिश कर रहा हूं कि कौन से आवश्यक हैं। उदाहरण के लिए, उन सभी के पास एक फाइल हो सकती है जिसे template.phpया कहा जाता है page.tpl.php

मैं कई निर्देशिकाओं के लिए सभी सामान्य फ़ाइलों का सेट कैसे पा सकता हूं? मेरे मामले में, सभी 'समान' फाइलें (समान नाम की) समान स्तर की निर्देशिका में होने जा रही हैं।


Ukuug.org/newsletter/10.4 के 'शेल पहेली' खंड में कुछ उत्तर हैं (हालांकि वे शेल-गोल्फ-ईश हैं)।
जेम्स यंगमैन

जवाबों:


7

सभी निर्देशिकाओं के लिए सामान्य सभी फ़ाइलों के नाम (पथ नहीं) सूचीबद्ध करें।

dirs=( "A dir" "B dir" "C dir" "D dir" )
find "${dirs[@]}" -maxdepth 1 -type f -name "*" -printf '%f\n' |
  sort | uniq -c | sed -n "s/^ *${#dirs[@]} //p"

या इसे स्क्रिप्ट-फ़ाइल या फ़ंक्शन के रूप में कहें, निर्देशिका के साथ पैरामीटर के रूप में।

find "$@" -maxdepth 1 -type f -name "*" -printf '%f\n' |
  sort | uniq -c | sed -n "s/^ *$# //p"

1

आप उन निर्देशिकाओं के नामों की सूची प्रदर्शित कर सकते हैं जिनमें वे दिखाई देते हैं।

find */ |              # traverse all the template directories
sort -t / -k 2 |       # sort, ignoring the first field
tr '/' '\t' |          # turn / into tabs
uniq -f 1 -c |         # count duplicates, ignoring the first field
tr '\t' '/' |          # turn tabs back into /
sort -t / -s -k 1n     # sort by the number of occurrences

0

मेल्ड के साथ आप दो निर्देशिकाओं की तुलना कर सकते हैं, और देख सकते हैं कि कौन सी फाइलें एक में मौजूद हैं, और दूसरी में नहीं हैं और इसके विपरीत। यह आम फाइलों के बीच अंतर भी दिखा सकता है।


0

3 निर्देशिकाओं के लिए, उनमें से एक वर्तमान, और दो 'ए' और 'बी', आप इस तरह से परीक्षण की श्रृंखला बना सकते हैं:

ls a/$(ls b/$(ls *.php) 2>/dev/null) 2>/dev/null

अगर फ़ाइलों का एक सामान्य पैटर्न (जैसे .php) है और फ़ाइल नाम में व्हॉट्सएप नहीं है।

lsलिपियों में उपयोग करना हमेशा समस्याग्रस्त होता है और मैं सामान्य रूप से इसका उपयोग करने से हतोत्साहित करता हूं, लेकिन यदि आपके पास निर्देशिका में सभी फाइलों के बारे में अवलोकन है जहां खोज शुरू होती है, और इसमें व्हाट्सएप नहीं है, और न ही "*" या "जैसे विशेष वर्ण हैं?" "," <"या" | ​​", इसे उपयोग करने के लिए सहेजा जाना चाहिए।

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