2010-02-11 7 views
8

उदाहरण लेते:डु -h उत्पादन के अंत से फ़ाइल नाम निकालने का तरीका

$ du -h file_size.txt 
112K file_size.txt 

कैसे मैं के उत्पादन में से फ़ाइल नाम हटा डु -h

मैं उपयोग करने के लिए कोशिश की है एक स्ट्रिंग (फ़ाइल का नाम) के लिए खोज और कुछ भी नहीं के साथ बदलना sed, लेकिन यह काम नहीं चढ़े, जिस (नीचे कमांड)

du -h file_size.txt | sed 's/ 'file_size.txt'//' 

किसी का कहना है कृपया सकते हैं क्यों यह अभ्यस्त काम, या शायद एक बेहतर तरीका यह करने के लिए?

सादर

पॉल

उत्तर

11

आप कुछ बुरा है कि कमांड लाइन में के हवाले से किया है। सबसे सरल शायद है:

du -h file_size.txt | sed 's/file_size.txt//' 

के बाद से अपनी पोस्ट एक awk टैग है::

du -h file_size.txt | awk '{ print $1 }' 
+2

या 'du -h file_size.txt | sed's/\ s +। * // ' – Tomalak

+0

@ टोमालक का' sed 'का उपयोग करने का सही विचार है - सुनिश्चित करें कि फाइलनाम दो बार टाइप कर रहा है। –

+0

वूप्स, एक ही उद्धरण जहां मेरे बाईं ओर एक $ VARIABLE है। हमेशा मदद के लिए धन्यवाद – paultop6

9
du -h file_size.txt | cut -f1 
+0

हाँ! तीन साल बाद लोगों की मदद करना! – Tastybrownies

5

सरल उत्पादन पहले कॉलम

du -h file_size.txt | cut -f -1 

अपने आदेश पंक्ति ठीक करने के लिए। यहाँ awk समाधान

du -h test.txt | awk '{ print $1 }' 
+0

+++ 1 :-) aus .at – Flavius

0

यह एक छोटे से अधिक वर्बोज़ है, लेकिन किसी भी मामले में, आप यही चाहते करने के लिए एक और तरीका है: अपने डेटा के लिए अलग क्षेत्रों, है

du -h file_size.txt |while read x junk; do echo $x; done 
0

@OP अगर उदाहरण रिक्त स्थान/टैब, फिर उन क्षेत्रों पर विभाजित करने के लिए awk/cut जैसे टूल का उपयोग करना आसान है। रेगेक्स (उदाहरण के लिए sed) का उपयोग करना आवश्यक नहीं है। खोल भी सिर्फ बेहतर है।

विभिन्न तरीकों

$ du -h file | awk '{print $1}' 
4.0K 

$ du -h file | cut -f1 
4.0K 

$ set -- $(du -h file) #using shell only 
$ echo $1 
4.0K 
0

आपका मूल आदेश को छोड़कर आप sed regexp में एक अंतरिक्ष शामिल कर रहे हैं कि काम होता है, और आउटपुट टैब du।

0

du -h का आउटपुट [टैब] सीमित है।

du -h file_size.txt |sed 's/[\t].*//g'