abc.123
sh スクリプトでは、基本的に abcという次のパターンに一致するすべてのファイルをループしようとしています。数字のみが続く場合、その後の数字.
は任意の長さにすることができます。
使用する
$ shopt -s extglob
$ ls abc.+([0-9])
仕事をしますが、スクリプトではなく端末で行います。パターンに一致するファイルのみを取得するにはどうすればよいですか?
私があなたを正しく理解していれば、パターンは正規表現に変換できます:
^abc\.[0-9]+$
できるように
使用し続けls
、出力をgrepします。例えば:
ls *.*|xargs -n1|grep -E '^abc\.[0-9]+$'
または使用find
検索にはオプションがあります-regex
sh
and notを使用していbash
て、おそらく POSIX にも準拠したい場合は、次を使用できます。
for f in ./*
do
echo "$f" | grep -Eq '^\./abc.[0-9]+$' && continue
echo "Something with $f here"
done
スペースや引用符などを含むファイル名でも問題なく動作しますが、一部のファイル名に一致しないはずの改行が含まれている場合があります。
bash を使用しているために質問にタグを付けた場合bash
は、説明したように extglob を使用してください。