刚开始使用bash,我在使这个脚本工作时遇到了一些麻烦。我希望它列出目录的内容,并仅将某些文件类型输出到.txt
。
我在尝试仅列出.pdf
,.txt
和.doc
文件时到目前为止所获得的一个示例如下,只是想知道我哪里出错了?
#!/bin/bash
ls -a | grep -vi '*.(pdf|txt|doc)$' $1 > contents.txt
答案 0 :(得分:4)
顺便说一句,你可以在没有grep
和正则表达式的情况下做到这一点,即
ls -a *.{pdf,txt,doc} > contents.txt
答案 1 :(得分:1)
你错过了逃避正则表达式中的一些角色,看看这个:
#!/bin/bash
ls -a | grep -i '.*\.\(pdf\|txt\|doc\)$' $1 > contents.txt
此外,从命令中删除-v
选项,因为它指示grep
传递这些选项
不匹配正则表达式
如果您不想逃避正则表达式字符,请考虑使用egrep
代替