2012-03-24 13 views
6

यूनिक्स 'फ़ाइल' कमांड में फ़ाइल नाम के बाद एक शून्य वर्ण आउटपुट करने के लिए a -0 विकल्प है। यह 'कट' के साथ उपयोग करने के लिए माना जाता है।शून्य पर 'कट' कैसे करें?

man file से:

-0, --print0 
     Output a null character ‘\0’ after the end of the filename. Nice 
     to cut(1) the output. This does not affect the separator which is 
     still printed. 

(। नोट, मेरे लिनक्स पर, 'एफ' विभाजक मुद्रित नहीं है - जो मेरे लिए अधिक समझ में आता है)

कैसे आप उपयोग कर सकते हैं 'काट' 'फ़ाइल' के आउटपुट से फ़ाइल नाम निकालने के लिए?

यह मुझे क्या करना चाहते हैं:

find . "*" -type f | file -n0iNf - | cut -d<null> -f1 

जहां <null> NUL चरित्र है।

ठीक है, मैं यही करने की कोशिश कर रहा हूं, मैं जो करना चाहता हूं वह एक निर्देशिका पेड़ से सभी फ़ाइल नाम प्राप्त करता है जिसमें एक विशेष एमआईएम प्रकार होता है। मैं एक grep (दिखाया नहीं) का उपयोग करें।

मैं सभी कानूनी फ़ाइल नामों को संभालना चाहता हूं और कॉलन के साथ फ़ाइल नामों पर फंसना नहीं चाहता, उदाहरण के लिए, उनके नाम पर। इसलिए, एनयूएल उत्कृष्ट होगा।

मुझे लगता है कि गैर-कट समाधान भी ठीक हैं, लेकिन मुझे एक साधारण विचार छोड़ने से नफरत है।

उत्तर

9

बस एक खाली परिसीमक निर्दिष्ट:

cut -d '' -f1 

(एनबी: -d और '' के बीच की जगह महत्वपूर्ण है, ताकि -d और रिक्त स्ट्रिंग अलग तर्क के रूप में पारित हो, यदि आप -d'' लिखते हैं, तो वह -d के रूप में पारित हो जाएगा, और फिर cut आपको लगता है कि आप -f1 को डेलीमीटर के रूप में उपयोग करने का प्रयास कर रहे हैं, जो शिकायत करेगा कि "डेलीमीटर एक एकल अक्षर होना चाहिए"।

+0

वह पीआर है मोटे तौर पर केवल एक चीज के लिए मैंने कोशिश नहीं की! धन्यवाद! – philcolbourn

+0

@philcolbourn: आपका स्वागत है! – ruakh

+2

यह बिल्कुल काम नहीं करता है। 'कट: खराब डेलीमीटर '(मैक ओएस एक्स) – Sukima

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