剛開始與bash,我有點麻煩讓這個腳本工作。我想要它列出一個目錄的內容,並只輸出某些文件類型到.txt
。Bash腳本列出特定的文件類型並寫入文件?
一個例子,當我試圖僅列出.pdf
,.txt
和.doc
文件時,我到目前爲止只是想知道哪裏出了問題?
#!/bin/bash
ls -a | grep -vi '*.(pdf|txt|doc)$' $1 > contents.txt
剛開始與bash,我有點麻煩讓這個腳本工作。我想要它列出一個目錄的內容,並只輸出某些文件類型到.txt
。Bash腳本列出特定的文件類型並寫入文件?
一個例子,當我試圖僅列出.pdf
,.txt
和.doc
文件時,我到目前爲止只是想知道哪裏出了問題?
#!/bin/bash
ls -a | grep -vi '*.(pdf|txt|doc)$' $1 > contents.txt
順便說一句,你可以做到這一點沒有grep
和正則表達式,即
ls -a *.{pdf,txt,doc} > contents.txt
你錯過了你的正則表達式中逃跑的某些字符,拿這個來看看:
#!/bin/bash
ls -a | grep -i '.*\.\(pdf\|txt\|doc\)$' $1 > contents.txt
此外,刪除該命令的-v
選項,因爲它指示grep
通過這些 項即不要匹配正則表達式
如果您不想逃避正則表達式字符,請考慮使用egrep
inst EAD
'egrep'或'grep -E'。 – Kevin
閱讀上找到。至於你的解決方案,你想grep來自管道的輸入,而不是在命令行指定的文件('$ 1')。 – jpm