我正在OSX计算机上制作一个bash脚本来创建一个打印套件。 该脚本工作正常,因为它可以将正确数量的文件副本发送到正确的目标。
然而,目的地'打印翻录'为文件提供先进先出'原理。我的脚本似乎是按文件制作每个文件的副本。我希望它能复制整个套件'的文件,然后继续下一个副本......
脚本现在制作副本的顺序是:
$merged_array = array();
$merged_array[] = $data;
$merged_array[] = $values;
print json_encode($merged_array,JSON_PRETTY_PRINT);
我希望脚本制作副本的顺序是:
File1-Copy1.jpg
File1-Copy2.jpg
File2-Copy1.jpg
File2-Copy2.jpg
我当前的脚本如下所示:
File1-Copy1.jpg
File2-Copy1.jpg
File1-Copy2.jpg
File2-Copy2.jpg
因此,在继续下一个文件之前,我不需要复制每个文件X次,而是需要脚本来复制所有文件,然后再继续下一个“设置”。文件...
有没有人知道如何让它发挥作用?
答案 0 :(得分:1)
使用sort
,例如:
for filename in $(find $scriptdir -name 'F*.jpg' -print|sort -t'/' -k2.11n)
do
echo $filename
base=${filename##*/}
cp "filename" "$printdir/$PrintColor/$base"
done
请注意,排序使用字段2(-k2.11
)字符11进行排序。这假定只有一个前导目录名称。如果你的路径更复杂,你可能需要调整它。
答案 1 :(得分:0)
我搞定了! 谢谢你的意见,伙计......
我将代码更改为以下内容:
for setnumber in $(seq $copies); do
for filename in $(find $filesdir -iname '*-F_*' -o -name '*.jpg' -print)
do
cp $filesdir/${filename##*/} $printdir"/"$PrintColor"_SET"$setnumber"_"${filename##*/}; done
sleep 5
done
添加sleep命令只是为了确保上一组的所有副本都已创建/加时间戳,然后再进行下一组....