बताएं कि क्या मैक ओएस एक्स में कोई फ़ोल्डर / फ़ाइल छिपी हुई है


10

मुझे पता है कि आप किसी फ़ोल्डर / फ़ाइल के छिपे हुए झंडे को सेट या अनसेट कर सकते हैं chflags hidden foo.txtऔर कर सकते हैं chflags nohidden foo.txt

लेकिन क्या यह बताने का कोई कारण है कि वर्तमान में फ़ोल्डर / फ़ाइल छिपी हुई है या नहीं?

मैं यह निर्धारित नहीं करना चाहता कि क्या फ़ोल्डर / फ़ाइल एक डॉट के साथ शुरू हो रहा है।

जवाबों:


10

Ls मैन पेज के अनुसार , आपको ls के साथ झंडे देखने के -Oविकल्प के साथ संयुक्त विकल्प होना चाहिए -l। उदाहरण के लिए:

ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt
chflags hidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt
chflags nohidden foo.txt
ls -Ol foo.txt
-rw-r--r-- 1 harry staff - 0 18 Aug 19:11 foo.txt

संपादित करें: ओपी चाहता था (नीचे टिप्पणी देखें) को अधिक विशिष्ट समाधान देने के लिए: यह देखने के लिए कि क्या कोई फ़ोल्डर छिपा हुआ है या नहीं, हम -aफ़ोल्डर को देखने के लिए ls के विकल्प को पास कर सकते हैं । हम उस आउटपुट की आवश्यक लाइन प्राप्त करने के लिए आउटपुट को sed -n 2p(धन्यवाद स्टैक ओवरफ्लो में ) पाइप कर सकते हैं । एक उदाहरण:

mkdir foo
chflags hidden foo
ls -aOl foo | sed -n 2p
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .

एडिट 2: एक कमांड के लिए, चाहे वह किसी फाइल या फोल्डर की हो, हमें काम करना चाहिए, इसके लिए हमें कुछ ज्यादा ही हैक करने की जरूरत है।

आउटपुट की आवश्यक पंक्ति ls -alइस बात पर निर्भर करती है कि क्या चीज़ फ़ाइल या फ़ोल्डर है, क्योंकि फ़ोल्डर कुल गणना दिखाते हैं, जबकि फ़ाइलें नहीं होती हैं। इसके चारों ओर जाने के लिए, हम चरित्र के लिए पकड़ बना सकते हैं r। यह सभी फ़ाइलों / फ़ोल्डरों के ~ सभी में होना चाहिए (लगभग सभी में कम से कम एक पढ़ने की अनुमति होनी चाहिए), लेकिन योग रेखा में नहीं।

जैसा कि हम जिस रेखा को प्राप्त करना चाहते हैं, वह पहली पंक्ति बन जाती है, हम head -n 1पहली पंक्ति प्राप्त करने के लिए उपयोग कर सकते हैं (विकल्प, यदि आप sed पसंद करते हैं, तो sed -n 1pइसका उपयोग किया जा सकता है)।

इसलिए, उदाहरण के लिए एक निर्देशिका के साथ:

mkdir foo
chflags hidden foo
ls -aOl foo | grep r | head -n 1
drwxr-xr-x@ 2 harry staff hidden 68 18 Aug 19:11 .

और एक फ़ाइल के साथ:

touch foo.txt
chflags hidden foo.txt
ls -aOl foo.txt | grep r | head -n 1
-rw-r--r-- 1 harry staff hidden 0 18 Aug 19:11 foo.txt

संपादित करें 3: नीचे एक अच्छा तरीका के लिए टायरिलो का जवाब देखें r:


लेकिन एक फ़ोल्डर के साथ ऐसा करने से, इसके तहत फ़ाइलों / फ़ोल्डरों के लिए झंडे की सूची होगी
टायिलो

ls -Ol fooDir/ | grep hiddenकेवल छिपी हुई फ़ाइलों को देखने के लिए , इसे केवल छिपी हुई फ़ाइलों / फ़ोल्डरों को देखने के लिए grep (जैसे ) के माध्यम से पाइप करें । यह अभी भी सभी फ़ाइलों को दिखाएगा, लेकिन अगर आप इसे कुछ sed / awk मैजिक के माध्यम से पाइप करते हैं (किसी और को यहां मदद करनी होगी तो मुझे डर है) आपको फ़ाइलों की एक सूची प्राप्त करने में सक्षम होना चाहिए।

मुझे उन फ़ाइलों की सूची नहीं चाहिए, जिन्हें मैं जानना चाहता हूं कि फ़ोल्डर "फू" छिपा हुआ है या नहीं
टायिलो

ठीक है। इसलिए डायरेक्टरी देखने के लिए खुद -aको ls में विकल्प जोड़ें । आउटपुट से आपको जो लाइन चाहिए, उसे पाने के लिए, आप sed का उपयोग कर सकते हैं। उदाहरण के लिए ls -aOl foo | sed -n 2p:। यह आउटपुट की एक पंक्ति प्रदर्शित करेगा। यदि इसमें "छिपा हुआ" शब्द है, तो फू छिपा हुआ है। यदि ऐसा नहीं होता है, तो फू छिपा नहीं है। :)

2
उपयोग करने ls -Old dirname/से आपको स्वयं निर्देशिका के गुण दिखाई देंगे, इसकी सामग्री नहीं।
bahamat

7

यहां समाधान मिला: मैं केवल निर्दिष्ट निर्देशिका के बारे में जानकारी कैसे दिखा सकता हूं, इसकी उप-फ़ाइलों या फ़ोल्डर सामग्री के बारे में जानकारी नहीं?

जो मूल रूप से है ls -ldO fooऔर फिर आप | awk '{ print $5 }'इसे जानकारी प्रदर्शित करने के लिए जोड़ते हैं।


1
ध्यान रखें कि उपयोगकर्ता या व्हाट्सएप में व्हाट्सएप टूटने पर awk टूट जाएगा (जो कि बेहद कम होना चाहिए, लेकिन हे)। मैंने एक सुरक्षित समाधान जोड़ा जो उपयोग करता है stat
mrm

1

@Tyilo द्वारा संदर्भित के रूप में , @Sorpigal कोशिश कर रहा है stat, जो %Xf(वह X झंडे वाला उपयोगकर्ता f lag) के साथ "उपयोगकर्ता झंडे" को एनकोड करता है , और मशीन पार्सिंग के लिए अधिक सुरक्षित है।

$ stat -f "%Xf" ~/Library
8000

उपयोगकर्ता फ़्लैग के लिए हेक्स मान यहां रहते हैं grep UF /usr/include/sys/stat.h:। MacOS के रूप में 10.11:

#define UF_SETTABLE     0x0000ffff  /* mask of owner changeable flags */
#define UF_NODUMP       0x00000001  /* do not dump file */
#define UF_IMMUTABLE    0x00000002  /* file may not be changed */
#define UF_APPEND       0x00000004  /* writes to file may only append */
#define UF_OPAQUE       0x00000008  /* directory is opaque wrt. union */
/* #define UF_NOUNLINK  0x00000010 */   /* file may not be removed or renamed */
#define UF_COMPRESSED   0x00000020  /* file is hfs-compressed */
/* UF_TRACKED is used for dealing with document IDs.  We no longer issue
   notifications for deletes or renames for files which have UF_TRACKED set. */
#define UF_TRACKED      0x00000040
#define UF_HIDDEN       0x00008000  /* hint that this item should not be */
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.