画像ファイルfoo_0.jpg
からfoo_99.jpg
のディレクトリがあります。ファイルfoo_0.jpg
からfoo_54.jpg
をコピーしたいと思います。
これはbashワイルドカードを使用するだけで可能ですか?
cp foo_[0-54].jpg
のようなものを考えていますが、これが0-5
と4
を選択することは知っています(右?)
また、ワイルドカードだけでは不可能(または効率的)でない場合、これを行うためのより良い方法は何でしょうか?
ありがとうございました。
これらのファイルを別のディレクトリにコピーしたいとします。
cp -t target_directory foo_{0..54}.jpg
私は glenn jackman 回答が好きですが、本当にグロブを使用したい場合は、次の方法でも機能する可能性があります。
_$ shopt -s extglob
$ cp foo_+([0-9]).jpg $targetDir
_
拡張グロブでは、+()
は、括弧内の式の1つ以上のインスタンスに一致します。
これで、_foo_
_、任意の番号、_.jpg
_という名前のすべてのファイルがコピーされます。これには、_foo_55.jpg
_、_foo_139.jpg
_、および_foo_1223218213123981237987.jpg
_が含まれます。
考え直してみると、グレンジャックマンの方が良い答えです。しかし、それは私に 拡張グロブ について話す機会を与えてくれました。
ls foo_ [0-9] .jpg foo_ [1-4] [0-9] .jpg foo_5 [0-4] .jpg
Lsで試してみて、それが良さそうな場合はコピーを実行してください。
for i in `seq 0 54`; do cp foo_$i.jpg <target>; done