सवाल आप एलएस द्वारा वास्तविक हार्ड लिंक कैसे देख सकते हैं?


मै भागा

ln /a/A /b/B

मैं फ़ोल्डर में देखना चाहता हूँ a जहां फ़ाइल ए द्वारा इंगित किया गया है ls


82
2017-07-25 09:41


मूल


हार्ड लिंक पॉइंटर्स नहीं हैं, सिम्लिंक हैं। वे एक ही फ़ाइल (इनोड) के लिए कई नाम हैं। एक के बाद link(2) सिस्टम कॉल, कोई समझ नहीं है जिसमें एक मूल है और एक लिंक है। यही कारण है कि, जैसा कि उत्तर बताते हैं, सभी लिंक खोजने का एकमात्र तरीका है find / -samefile /a/A। चूंकि एक इनोड के लिए एक निर्देशिका प्रविष्टि एक ही इनोड के लिए अन्य निर्देशिका प्रविष्टियों के बारे में "नहीं जानता" है। वे सब इनोड को पुन: गणना करते हैं ताकि इसे हटाया जा सके जब इसके लिए अंतिम नाम है unlink(2)ed। (यह "लिंक गिनती" है ls उत्पादन)। - Peter Cordes
@ पीटरकॉर्ड: क्या रीफलक वास्तव में हार्डलिंक प्रविष्टि में संग्रहीत है? यही वही है जो आपके शब्द का तात्पर्य है ("वे जो करते हैं वह इनोड को पुन: गणना करते हैं ...") लेकिन अगर यह एक दूसरे के बारे में कुछ नहीं जानता है, तो यह समझ में नहीं आता है, क्योंकि जब कोई अपडेट होता है, तो अन्य सभी को किसी भी तरह से करना होगा अद्यतन किया जा। या फिर इनोड में संग्रहीत रेफकाउंट है? (अगर यह एक बेवकूफ सवाल है तो मुझे माफ़ कर दो, मैं खुद को नौसिखिया मानता हूं और मैं अभी भी सीख रहा हूं)। - loneboat
रेफकाउंट इनोड में संग्रहीत किया जाता है, जैसा कि आपने अंततः अन्य तथ्यों से मामला होना चाहिए। :) निर्देशिका प्रविष्टियों को इनोड्स के लिए पॉइंटर्स नाम दिया जाता है। जब आप एक ही इनोड को इंगित करते हुए एकाधिक नाम रखते हैं तो हम इसे "हार्ड लिंकिंग" कहते हैं। - Peter Cordes


जवाब:


आप अपनी फाइल के लिए इनोड नंबर पा सकते हैं

ls -i

तथा

ls -l

संदर्भ गणना दिखाता है (किसी विशेष इनोड में हार्डलिंक की संख्या)

इनोड नंबर मिलने के बाद, आप एक ही इनोड के साथ सभी फ़ाइलों की खोज कर सकते हैं:

find . -inum NUM

वर्तमान dir (।) में इनोड NUM के लिए फ़ाइल नाम दिखाएगा


149
2017-07-25 10:01



आप बस खोज सकते हैं। -सम्रेम फ़ाइल नाम - BeowulfNode42
@ BeowulfNode42 यह आदेश बहुत अच्छा है, लेकिन इसे कम से कम एक ही फाइल के साझा रूट फ़ोल्डर की आवश्यकता है। - Itachi
यह उत्तर एक व्यावहारिक "यह करें" देता है लेकिन मुझे दृढ़ता से लगता है @LaurenceGonsalves जवाब "कैसे" और / या "क्यों" प्रश्न। - Trevor Boyd Smith


वास्तव में आपके प्रश्न का एक अच्छी तरह से परिभाषित उत्तर नहीं है। सिम्लिंक के विपरीत, हार्डलिंक "मूल फ़ाइल" से अलग नहीं हैं।

निर्देशिका प्रविष्टियों में एक फ़ाइल नाम और एक इनोड में एक सूचक शामिल होता है। बदले में इनोड में फ़ाइल मेटाडेटा और (पॉइंटर्स) वास्तविक फ़ाइल सामग्री होती है)। एक हार्ड लिंक बनाना एक ही फ़ाइल नाम + एक ही इनोड के संदर्भ बनाता है। ये संदर्भ यूनिडायरेक्शनल (सामान्य फाइल सिस्टम में, कम से कम) हैं - इनोड केवल संदर्भ गणना रखता है। "मूल" फ़ाइल नाम कौन सा पता लगाने का कोई आंतरिक तरीका नहीं है।

वैसे, इसीलिए सिस्टम को "डिलीट" करने के लिए कॉल किया जाता है unlink। यह सिर्फ एक हार्डलिंक हटा देता है। इनोड एक संदर्भ डेटा केवल तभी हटा दिया जाता है जब इनोड की संदर्भ संख्या 0 तक गिर जाती है।

किसी दिए गए इनोड के अन्य संदर्भों को ढूंढने का एकमात्र तरीका फाइल सिस्टम जांच को पूरी तरह से खोजना है, जो फाइल इनोड को प्रश्न में संदर्भित करती है। आप इस चेक को करने के लिए खोल से 'टेस्ट ए-एफ बी' का उपयोग कर सकते हैं।


54
2017-07-25 09:51



इसका मतलब है कि दूसरी फ़ाइल के लिए एक कठिन लिंक जैसी कोई चीज नहीं है, क्योंकि मूल फ़ाइल भी एक कठिन लिंक है; हार्ड लिंक एक को इंगित करता है डिस्क पर स्थान। - jtbandes
@jtbandes: हार्ड लिंक एक इनोड को इंगित करते हैं जो वास्तविक डेटा को इंगित करता है। - dash17291


यूनिक्स के पास हार्ड लिंक और प्रतीकात्मक लिंक हैं (के साथ बनाया गया है "ln" तथा "ln -s" क्रमशः)। प्रतीकात्मक लिंक केवल एक फ़ाइल है जिसमें किसी अन्य फ़ाइल का असली पथ होता है और फाइल सिस्टम को पार कर सकता है।

यूनिक्स के शुरुआती दिनों से हार्ड लिंक आसपास रहे हैं (जिसे मैं वैसे भी याद रख सकता हूं, और यह काफी समय से वापस जा रहा है)। वे दो निर्देशिका प्रविष्टियां हैं जो संदर्भित करती हैं सटीक एक ही अंतर्निहित डेटा। फ़ाइल में डेटा इसके द्वारा निर्दिष्ट किया गया है inode। फ़ाइल सिस्टम पर प्रत्येक फ़ाइल एक इनोड को इंगित करती है लेकिन कोई आवश्यकता नहीं है कि प्रत्येक फ़ाइल एक अद्वितीय इनोड को इंगित करे - जहां हार्ड लिंक आते हैं।

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

आप इसका उपयोग कर सकते हैं "ls -i" एक विशेष फ़ाइल के इनोड प्राप्त करने के लिए आदेश। फिर आप इसका उपयोग कर सकते हैं "find <filesystemroot> -inum <inode>" उस दिए गए इनोड के साथ फाइल सिस्टम पर सभी फाइलें खोजने के लिए आदेश।

यहां एक स्क्रिप्ट है जो वास्तव में करता है। आप इसके साथ इनकार करते हैं:

findhardlinks ~/jquery.js

और यह उस फाइल सिस्टम पर सभी फाइलें पायेगा जो उस फ़ाइल के लिए कठिन लिंक हैं:

pax@daemonspawn:~# ./findhardlinks /home/pax/jquery.js
Processing '/home/pax/jquery.js'
   '/home/pax/jquery.js' has inode 5211995 on mount point '/'
       /home/common/jquery-1.2.6.min.js
       /home/pax/jquery.js

यहां लिपि है।

#!/bin/bash
if [[ $# -lt 1 ]] ; then
    echo "Usage: findhardlinks <fileOrDirToFindFor> ..."
    exit 1
fi

while [[ $# -ge 1 ]] ; do
    echo "Processing '$1'"
    if [[ ! -r "$1" ]] ; then
        echo "   '$1' is not accessible"
    else
        numlinks=$(ls -ld "$1" | awk '{print $2}')
        inode=$(ls -id "$1" | awk '{print $1}' | head -1l)
        device=$(df "$1" | tail -1l | awk '{print $6}')
        echo "   '$1' has inode ${inode} on mount point '${device}'"
        find ${device} -inum ${inode} 2>/dev/null | sed 's/^/        /'
    fi
    shift
done

32
2017-07-25 12:13



@pax: स्क्रिप्ट में एक बग प्रतीत होता है। मैं इसे शुरू करता हूँ . ./findhardlinks.bash ओएस एक्स के ज़ेड में होने के दौरान। स्क्रीन में मेरी वर्तमान विंडो बंद हो जाती है।
@ मासी मुद्दा आपका प्रारंभिक है। (स्रोत कमांड के समान)। इससे आपके खोल से बाहर निकलने के लिए निकास 1 कमांड का कारण बनता है। Chmod a + x findhardlinks.bash का उपयोग करें, फिर इसे ./findhardlinks.bash के साथ निष्पादित करें या bash findhardlinks.bash का उपयोग करें - njsf
कृपया, अपने उत्तर का मेरा जवाब देखें superuser.com/questions/12972/to-see-hardlinks-by-ls/... - Léo Léopold Hertz 준영
प्रोग्रामेटिक रूप से ऐसा करने के लिए, यदि आप इसका उपयोग करते हैं तो यह शायद अधिक लचीला है: INUM=$(stat -c %i $1)। भी NUM_LINKS=$(stat -c %h $1)। देख man stat अधिक प्रारूप चर के लिए आप उपयोग कर सकते हैं। - Joe
अब तक का सबसे अच्छा जवाब। कुडोस। - MariusMatutiae


ls -l

पहला कॉलम अनुमतियों का प्रतिनिधित्व करेगा। दूसरा कॉलम उप-आइटम (निर्देशिकाओं के लिए) या फ़ाइल में समान डेटा (हार्ड लिंक सहित हार्ड लिंक) की पथ की संख्या होगी। उदाहरण के लिए:

-rw-r--r--@    2    [username]    [group]    [timestamp]     HardLink
-rw-r--r--@    2    [username]    [group]    [timestamp]     Original
               ^ Number of hard links to the data

23
2017-07-25 10:01



यह निर्धारित करने में सहायक है कि किसी दिए गए फ़ाइल में [अन्य] हार्ड लिंक हैं, लेकिन वे कहां नहीं हैं। - mklement0


निम्नलिखित सरल के बारे में कैसे? (लेटर ऊपर की लंबी लिपियों को प्रतिस्थापित कर सकता है!)

यदि आपके पास एक विशिष्ट फ़ाइल है <THEFILENAME>और निर्देशिका में फैले अपने सभी हार्डलिंक जानना चाहते हैं <TARGETDIR>, (जो कि पूरी फाइल सिस्टम भी हो सकती है /)

find <TARGETDIR> -type f -samefile  <THEFILENAME>

तर्क को विस्तारित करना, यदि आप सभी फाइलों को जानना चाहते हैं <SOURCEDIR> कई हार्ड-लिंक फैले हुए हैं <TARGETDIR>:

find <SOURCEDIR> -type f -links +1   \
  -printf "\n\n %n HardLinks of file : %H/%f  \n"   \
  -exec find <TARGETDIR> -type f -samefile {} \; 

9
2017-08-15 08:52



यह मेरे लिए सबसे अच्छा जवाब है! लेकिन मैं उपयोग नहीं करता -type f क्योंकि फ़ाइल भी एक निर्देशिका हो सकती है। - silvio
@ सिल्वियो: आप केवल कड़ी लिंक बना सकते हैं फ़ाइलेंनिर्देशिका नहीं है। - mklement0
@ mklement0: आप सही हैं! - silvio
. तथा .. निर्देशिका में प्रविष्टियां हार्डलिंक्स हैं। आप बता सकते हैं कि लिंक गिनती से निर्देशिका में कितने subdirs हैं .। वैसे भी, यह moot है find -samefile . अभी भी कोई प्रिंट नहीं करेगा subdir/.. उत्पादन। find (कम से कम जीएनयू संस्करण) को अनदेखा करने के लिए हार्डकोड किया जाता है .., भी साथ -noleaf। - Peter Cordes
यह भी, कि सभी-लिंक विचार मिलते हैं O(n^2), और चलता है find एक बार हार्डलिंक्ड फ़ाइलों के एक सेट के प्रत्येक सदस्य के लिए। find ... -printf '%16i %p\n' | sort -n | uniq -w 16 --all-repeated=separate काम करेगा, (16 2 ^ 63-1 के दशमलव प्रतिनिधित्व के लिए पर्याप्त नहीं है, इसलिए जब आपका एक्सएफएस फाइल सिस्टम इतना बड़ा है कि इनोड संख्याओं को उच्च करने के लिए पर्याप्त है, तो देखें) - Peter Cordes


फाइल सिस्टम में सभी हार्डलिंक्स खोजने के लिए स्क्रिप्ट के साथ बहुत सारे जवाब हैं। उनमें से ज्यादातर मूर्ख फाइलें जैसे पूरे फाइल सिस्टम को स्कैन करने के लिए खोजते हैं -samefile प्रत्येक बहुगुणित फ़ाइल के लिए। यह पागलपन है; आपको बस इनोड नंबर को सॉर्ट करना और डुप्लीकेट प्रिंट करना है।

find directories.. -xdev ! -type d -links +1 -printf '%20D %20i %p\n' | sort -n | uniq -w 42 --all-repeated=separate  (एफएस-आईडी का समर्थन करने के लिए मेरे मूल आदेश को ट्वीव करने के लिए @ टिनो के लिए धन्यवाद (%D), और सभी गैर-निर्देशिका फ़ाइल प्रकारों को संभालने के लिए, न केवल नियमित फाइलें। यह आपके गुणा-जुड़े सिम्लिंक, पाइप इत्यादि पाएगा)

का उपयोग करते हुए ! -type d -links +1 इसका मतलब है कि सॉर्ट का इनपुट केवल यूनिक के अंतिम आउटपुट के रूप में बड़ा है। जब तक आप इसे उपनिर्देशिका पर नहीं चलाते हैं जिसमें केवल हार्डलिंक्स के एक सेट होते हैं। वैसे भी, यह किसी भी अन्य पोस्ट किए गए समाधान की तुलना में फाइल सिस्टम को फिर से चलाने के लिए बहुत कम CPU समय का उपयोग करेगा।

नमूना उत्पादन:

...
            2429             76732484 /home/peter/weird-filenames/test/.hiddendir/foo bar
            2429             76732484 /home/peter/weird-filenames/test.orig/.hiddendir/foo bar

            2430             17961006 /usr/bin/pkg-config.real
            2430             17961006 /usr/bin/x86_64-pc-linux-gnu-pkg-config

            2430             36646920 /usr/lib/i386-linux-gnu/dri/i915_dri.so
            2430             36646920 /usr/lib/i386-linux-gnu/dri/i965_dri.so
            2430             36646920 /usr/lib/i386-linux-gnu/dri/nouveau_vieux_dri.so
            2430             36646920 /usr/lib/i386-linux-gnu/dri/r200_dri.so
            2430             36646920 /usr/lib/i386-linux-gnu/dri/radeon_dri.so
...

TODO ?: उत्पादन को un-pad। uniq फ़ील्ड-चयन समर्थन बहुत सीमित है, इसलिए मैं खोज आउटपुट पैड करता हूं और निश्चित चौड़ाई का उपयोग करता हूं। 20chars अधिकतम संभव इनोड या डिवाइस नंबर (2 ^ 64-1 = 18446744073709551615) के लिए पर्याप्त है। एक्सएफएस इनोड संख्याओं को चुनता है, जहां डिस्क पर आवंटित किया गया है, 0 से संगत नहीं है, इसलिए बड़े एक्सएफएस फाइल सिस्टम में 32 बिट इनोड संख्या हो सकती है, भले ही उनके पास अरबों फाइलें न हों। अन्य फाइल सिस्टम में 20 अंकों की इनोड संख्या हो सकती है भले ही वे विशाल न हों।

TODO: पथ द्वारा डुप्लीकेट के समूहों को सॉर्ट करें। माउंट पॉइंट द्वारा क्रमबद्ध किए जाने के बाद, इनोड संख्या एक साथ चीजों को मिश्रित करती है, यदि आपके पास कुछ अलग उपनिवेश हैं जिनमें बहुत सारे हार्डलिंक्स हैं। (यानी डुप्लिकेट समूह के समूह एक साथ जाते हैं, लेकिन आउटपुट उन्हें मिश्रित करता है)।

एक अंतिम sort -k 3 लाइनों को अलग-अलग क्रमबद्ध करें, लाइनों के समूह को एक रिकॉर्ड के रूप में नहीं। न्यूलाइन की एक जोड़ी को एनयूएल बाइट में बदलने और जीएनयू का उपयोग करने के लिए कुछ प्रीप्रोसेसिंग करना sort --zero-terminated -k 3 चाल चल सकता है। tr केवल एकल पात्रों पर काम करता है, न कि 2-> 1 या 1-> 2 पैटर्न, हालांकि। perl यह करेगा (या सिर्फ पर्स या अजीब के भीतर पार्स और सॉर्ट करें)। sed काम भी कर सकता है।


4
2018-04-21 19:32



%D फाइल सिस्टम पहचानकर्ता है (यह वर्तमान बूट के लिए अद्वितीय है जबकि कोई फाइल सिस्टम नहीं है umountएड), तो निम्नलिखित और भी सामान्य है: find directories.. -xdev ! -type d -links +1 -printf '%20i %20D %p\n' | sort -n | uniq -w 42 --all-repeated=separate। यह तब तक काम करता है जब तक किसी दिए गए निर्देशिका में फाइल सिस्टम स्तर पर कोई अन्य निर्देशिका नहीं होती है, यह सब कुछ भी देखता है जिसे हार्डलिंक किया जा सकता है (जैसे डिवाइस या सॉफ्टलिंक्स - हाँ, सॉफ्टलिंक्स में 1 से अधिक लिंक गिनती हो सकती है)। ध्यान दें कि dev_t तथा ino_t आज 64 बिट लंबा है। यह तब तक होगा जब तक हमारे पास 64 बिट सिस्टम हों। - Tino
@ टिनो: उपयोग करने के बारे में महान बिंदु ! -type d, के बजाय -type f। मेरे फाइल सिस्टम पर फ़ाइलों के कुछ संग्रह व्यवस्थित करने से मेरे पास कुछ हार्डलिंक्ड सिम्लिंक भी हैं। अपने उन्नत संस्करण के साथ मेरा उत्तर अपडेट किया गया है (लेकिन मैंने पहले एफएस-आईडी डाला है, इसलिए फ़ाइल सिस्टम द्वारा कम से कम समूह क्रमबद्ध करें।) - Peter Cordes


यह कुछ हद तक टोरोकोरो-माचो के अपने उत्तर और लिपि पर टिप्पणी है, लेकिन यह स्पष्ट रूप से टिप्पणी बॉक्स में फिट नहीं होगा।


जानकारी को ढूंढने के लिए और अधिक सरल प्रक्रियाओं के साथ अपनी स्क्रिप्ट को और अधिक सरल तरीकों से दोबारा दोहराएं।

#!/bin/sh
xPATH=$(readlink -f -- "${1}")
for xFILE in "${xPATH}"/*; do
    [ -d "${xFILE}" ] && continue
    [ ! -r "${xFILE}" ] && printf '"%s" is not readable.\n' "${xFILE}" 1>&2 && continue
    nLINKS=$(stat -c%h "${xFILE}")
    if [ ${nLINKS} -gt 1 ]; then
        iNODE=$(stat -c%i "${xFILE}")
        xDEVICE=$(stat -c%m "${xFILE}")
        printf '\nItem: %s[%d] = %s\n' "${xDEVICE}" "${iNODE}" "${xFILE}";
        find "${xDEVICE}" -inum ${iNODE} -not -path "${xFILE}" -printf '     -> %p\n' 2>/dev/null
    fi
done

मैंने इसे आसान तुलना के लिए जितना संभव हो उतना समान रखने की कोशिश की।

इस स्क्रिप्ट और आपकी टिप्पणियों पर टिप्पणियाँ

  • हमेशा से बचना चाहिए $IFS जादू अगर एक ग्लोब पर्याप्त है, क्योंकि यह अनावश्यक रूप से घुलनशील है, और फ़ाइल नामों में वास्तव में न्यूलाइन हो सकती है (लेकिन व्यवहार में ज्यादातर कारण)।

  • आपको मैन्युअल रूप से पार्सिंग से बचना चाहिए ls और जितना संभव हो उतना आउटपुट, क्योंकि यह जल्द या बाद में आपको काट देगा। उदाहरण के लिए: अपने पहले में awkलाइन, आप रिक्त स्थान वाले सभी फ़ाइल नामों में विफल हो जाते हैं।

  • printf अक्सर अंत में परेशानियों को बचाएगा क्योंकि यह इतना मजबूत है %s वाक्य - विन्यास। यह आपको आउटपुट पर पूर्ण नियंत्रण भी देता है, और यह लगातार संगत है सब सिस्टम, विपरीत echo

  • stat इस मामले में आपको बहुत सारे तर्क बचा सकते हैं।

  • GNU find शक्तिशाली है

  • तुंहारे head तथा tail invocations सीधे में संभाला जा सकता था awk उदाहरण के साथ exit आदेश और / या पर चयन NR चर। यह प्रक्रिया चालान को बचाएगा, जो लगभग हमेशा कठिन काम करने वाली स्क्रिप्ट में प्रदर्शन को बेहतर बनाता है।

  • तुंहारे egrepएस बस भी हो सकता है grep


3
2018-06-13 07:40



xDEVICE = $ (stat -c% m "$ {xFILE}") सभी सिस्टम पर काम नहीं करता है (उदाहरण के लिए: stat (GNU coreutils) 6.12)। यदि स्क्रिप्ट आउटपुट "आइटम:?" प्रत्येक पंक्ति के सामने, फिर इस अपमानजनक रेखा को मूल स्क्रिप्ट की तरह एक पंक्ति के साथ प्रतिस्थापित करें, लेकिन xITEM के साथ xFILE का नाम बदल दिया गया है: xDEVICE = $ (df "$ {xFILE}" | tail -1l | awk '{print $ 6} ') - kbulgrien
यदि आप केवल "मास्टर" के रूप में प्रत्येक सदस्य के साथ दोहराए जाने के बजाय हार्डलिंक्स के समूह चाहते हैं, तो इसका उपयोग करें find ... -xdev -type f -links +1 -printf '%16i %p\n' | sort -n | uniq -w 16 --all-repeated=separate। यह बहुत तेज़ है, क्योंकि यह केवल एक बार एफएस को पार करता है। एक बार में कई एफएस के लिए, आपको एक एफएस आईडी के साथ इनोड संख्याओं को उपसर्ग करना होगा। शायद साथ find -exec stat... -printf ... - Peter Cordes
उस विचार को एक जवाब में बदल दिया - Peter Cordes


पर आधारित findhardlinks स्क्रिप्ट (इसका नाम बदलकर hard-links), यह वही है जो मैंने दोबारा किया है और इसे काम किया है।

आउटपुट:

# ./hard-links /root

Item: /[10145] = /root/.profile
    -> /proc/907/sched
    -> /<some-where>/.profile

Item: /[10144] = /root/.tested
    -> /proc/907/limits
    -> /<some-where else>/.bashrc
    -> /root/.testlnk

Item: /[10144] = /root/.testlnk
    -> /proc/907/limits
    -> /<another-place else>/.bashrc
    -> /root/.tested

# cat ./hard-links
#!/bin/bash
oIFS="${IFS}"; IFS=$'\n';
xPATH="${1}";
xFILES="`ls -al ${xPATH}|egrep "^-"|awk '{print $9}'`";
for xFILE in ${xFILES[@]}; do
  xITEM="${xPATH}/${xFILE}";
  if [[ ! -r "${xITEM}" ]] ; then
    echo "Path: '${xITEM}' is not accessible! ";
  else
    nLINKS=$(ls -ld "${xITEM}" | awk '{print $2}')
    if [ ${nLINKS} -gt 1 ]; then
      iNODE=$(ls -id "${xITEM}" | awk '{print $1}' | head -1l)
      xDEVICE=$(df "${xITEM}" | tail -1l | awk '{print $6}')
      echo -e "\nItem: ${xDEVICE}[$iNODE] = ${xITEM}";
      find ${xDEVICE} -inum ${iNODE} 2>/dev/null|egrep -v "${xITEM}"|sed 's/^/   -> /';
    fi
  fi
done
IFS="${oIFS}"; echo "";

2
2017-11-16 22:46



मैंने इस स्क्रिप्ट पर एक अलग उत्तर के रूप में टिप्पणी पोस्ट की। - Daniel Andersson