0

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

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

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

2 回答 2

4

顺便说一句,你可以在没有grep和正则表达式的情况下做到这一点,即

ls -a *.{pdf,txt,doc} > contents.txt
于 2012-11-12T01:40:48.427 回答
1

你错过了在你的正则表达式中转义一些字符,看看这个:

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

另外,从命令中删除-v选项,因为它指示grep传递那些与正则表达式不匹配的条目

如果您不想转义正则表达式字符,请考虑egrep改用

于 2012-11-12T00:53:43.963 回答