2012-11-12 47 views
0

剛開始與bash,我有點麻煩讓這個腳本工作。我想要它列出一個目錄的內容,並只輸出某些文件類型到.txtBash腳本列出特定的文件類型並寫入文件?

一個例子,當我試圖僅列出.pdf,.txt.doc文件時,我到目前爲止只是想知道哪裏出了問題?

#!/bin/bash 
ls -a | grep -vi '*.(pdf|txt|doc)$' $1 > contents.txt 
+3

閱讀上找到。至於你的解決方案,你想grep來自管道的輸入,而不是在命令行指定的文件('$ 1')。 – jpm

回答

4

順便說一句,你可以做到這一點沒有grep和正則表達式,即

ls -a *.{pdf,txt,doc} > contents.txt 
1

你錯過了你的正則表達式中逃跑的某些字符,拿這個來看看:

#!/bin/bash 
ls -a | grep -i '.*\.\(pdf\|txt\|doc\)$' $1 > contents.txt 

此外,刪除該命令的-v選項,因爲它指示grep通過這些 項即不要匹配正則表達式

如果您不想逃避正則表達式字符,請考慮使用egrep inst EAD

+1

'egrep'或'grep -E'。 – Kevin

相關問題