Bash脚本列出特定的文件类型并写入文件?

时间:2012-11-12 00:44:34

标签: regex bash grep ls

刚开始使用bash,我在使这个脚本工作时遇到了一些麻烦。我希望它列出目录的内容,并仅将某些文件类型输出到.txt

我在尝试仅列出.pdf.txt.doc文件时到目前为止所获得的一个示例如下,只是想知道我哪里出错了?

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

2 个答案:

答案 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代替