我想将一系列相似的文件从当前目录复制到目标目录,当前目录下的文件是:
prod07_sim0500-W31-0.2_velocity-models-2D_t80_f0001_ux.hst
prod07_sim0500-W31-0.2_velocity-models-2D_t80_f0001_uz.hst
prod07_sim0500-W31-0.2_velocity-models-2D_t80_f0002_ux.hst
prod07_sim0500-W31-0.2_velocity-models-2D_t80_f0002_uz.hst
prod07_sim0500-W31-0.2_velocity-models-2D_t80_f0003_ux.hst
prod07_sim0500-W31-0.2_velocity-models-2D_t80_f0003_uz.hst
其中sim
从sim0001
到sim0500
,而f
从f0001
到f0009
。我只需要f0002
,f0005
和f0008
。我编写以下代码:
target_dir="projects/data"
for i in {0001..0500}; do
for s in f000{2,5,8}; do
files="[*]$i[*]$s[*]"
cp $files target_dir
done
done
我对Shell非常陌生,想知道如何编写$files="[*]$i[*]$s[*]"$
,以便它只能匹配f0002
,f0005
和f0008
。我之所以也使用for i in {0001..0500}; do
的原因是文件太大,我想确保一开始就可以访问一些完成的文件(例如,包括所有sim0001)。
编辑:将for s in f0002 f0005 f0008; do
更改为f000{2,5,8}
。