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 に答える