2


abc.123sh スクリプトでは、基本的に abcという次のパターンに一致するすべてのファイルをループしようとしています。数字のみが続く場合、その後の数字.は任意の長さにすることができます。
使用する

$ shopt -s extglob
$ ls abc.+([0-9])

仕事をしますが、スクリプトではなく端末で行います。パターンに一致するファイルのみを取得するにはどうすればよいですか?

4

2 に答える 2

2

私があなたを正しく理解していれば、パターンは正規表現に変換できます:

^abc\.[0-9]+$

できるように

使用し続けls、出力をgrepします。例えば:

ls *.*|xargs -n1|grep -E '^abc\.[0-9]+$'

または使用find

検索にはオプションがあります-regex

于 2013-02-23T00:15:07.877 に答える
1

shand notを使用していbashて、おそらく POSIX にも準拠したい場合は、次を使用できます。

for f in ./*
do
    echo "$f" | grep -Eq '^\./abc.[0-9]+$' && continue
    echo "Something with $f here"
done

スペースや引用符などを含むファイル名でも問題なく動作しますが、一部のファイル名に一致しないはずの改行が含まれている場合があります。

bash を使用しているために質問にタグを付けた場合bashは、説明したように extglob を使用してください。

于 2013-02-23T01:33:55.540 に答える