![](/img/trans.png)
[英]How can I copy files with names containing spaces and UNICODE, when using a shell script?
[英]Shell, copy files with similar names
我想将一系列类似的文件从当前目录复制到目标目录,当前目录下的文件是:
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
使用for i in {0001..0500}; do
的原因也是for i in {0001..0500}; do
for i in {0001..0500}; do
是文件太大了,我想确保我可以在开始时访问一些已完成的文件(例如,包括所有的sim0001)。
编辑: for s in f0002 f0005 f0008; do
更改for s in f0002 f0005 f0008; do
for s in f0002 f0005 f0008; do
f000{2,5,8}
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.