bash を使い始めたばかりで、このスクリプトを機能させるのに少し問題があります。ディレクトリの内容を一覧表示し、特定のファイル タイプのみを.txt
.
.pdf
、.txt
およびファイルのみをリストしようとしたときにこれまでに得たものの例を.doc
以下に示します。どこが間違っているのか疑問に思っていますか?
#!/bin/bash
ls -a | grep -vi '*.(pdf|txt|doc)$' $1 > contents.txt
ちなみに、grep
正規表現なしでこれを行うことができます。
ls -a *.{pdf,txt,doc} > contents.txt
正規表現内の一部の文字をエスケープできませんでした。これを見てください。
#!/bin/bash
ls -a | grep -i '.*\.\(pdf\|txt\|doc\)$' $1 > contents.txt
また、正規表現に一致しないエントリを渡す-v
ように指示するため、コマンドからオプションを削除しますgrep
正規表現文字をエスケープしたくない場合は、egrep
代わりに使用することを検討してください