2

ファイルのリストについては、末尾が.txt. 私は現在、この表現を使用しています:

.*(txt$)|(html\.txt$)

この式は で終わるものすべてに一致.txtしますが、逆にしたいと思います。


一致する必要があります:

happiness.html
joy.png
fear.src

一致し ない :

madness.html.txt
excitement.txt

fswatchとペアで使用できるように、これを入手したいと思います。

fswatch -0 -e 'regex here' . | xargs -0 -n 1 -I {} echo "{} has been changed"

問題は、それが機能していないように見えることです。

PS: fswatch の代わりにタグ bash を使用します。これを作成するのに十分な評判ポイントがないためです。ごめん!

4

4 に答える 4

3

この目的で否定先読みを使用できます。

^(?!.*\.txt).+$

ライブデモ

オプションを使用して、grep でこの式を使用できます-P

grep -Po '^(?!.*\.txt).+$' file
于 2014-10-28T19:34:47.597 に答える
1

質問は としてタグ付けされているためbash、先読みはサポートされていない可能性があります ( を除くgrep -P)。grep先読みを必要としない解決策の 1 つを次に示します。

grep -v '\.txt$' file
happiness.html
joy.png
fear.src

編集:このコマンドを使用して、ファイルxargsの一致を回避できます。*.txt

xargs -0 -n 1 -I {} bash -c '[[ "{}" == *".txt" ]] && echo "{} has been changed"'
于 2014-10-28T19:39:32.580 に答える