我在某个目录中有这样的文件:
my@unix:~/kys$ ls
address_modified_20130312.txt customer_rows_full_20131202.txt
customer_full_20131201.txt customer_rows_modified_20131202.txt
customer_modified_20131201.txt
my@unix:~/kys$
我想使用grep来获取以“customer”开头的某些文件名。我试过这个
my@unix:~/kys$ ls | grep customer.*
customer_full_20131201.txt
customer_modified_20131201.txt
customer_rows_full_20131202.txt
customer_rows_modified_20131202.txt
my@unix:~/kys$
但这给了我这些我不想要的customer_rows。*文件。正确的结果集是
customer_full_20131201.txt
customer_modified_20131201.txt
如何实现这一目标?
答案 0 :(得分:1)
您可以尝试:
ls customer_[fm]*
或
ls customer_[^r]*
答案 1 :(得分:1)
使用grep -v
过滤掉您不想要的内容。
ls customer* | grep -v '^customer_rows'
答案 2 :(得分:1)
使用grep
ls -1 | grep "^customer_[^r].*$"
使用find
命令
find . \! -iname "customer_rows*"
答案 3 :(得分:0)
使用Bash扩展通配,你可以说
ls customer_!(rows)*
或者更可能是
之类的东西for f in customer_!(rows)*; do
: something with "$f"
done
使用POSIX shell或传统的Bourne,你可以说
for f in customer_*; do
case $f in customer_rows* ) continue ;; esac
: something with "$f"
done