我正在用bash在CentOS上工作,我在一个目录中有文件,如下所示:
16948.png 16948_thumb.png 16948-1_thumb.png 16949.png 16948_thumb.png 16949-1_thumb.png 16950-1.png 16950-1_thumb.png 16950-2.png 16950-2_thumb.png
我想要做以下事情:
不过,我的shell脚本还不够好。 这是就我所知 – 任何人都可以帮忙吗?
#!/bin/sh declare -a unique_numbers for filename in ./images do // split filename at - or _ to get N, and then check // whether N is already in list of unique numbers // if it is, skip continue // if it isn't, append to unique_numbers unique_numbers+=(N) // then check whether there is a file N-1.png.. etc done;
如果我很了解你,这应该做到这一点。 第一个循环处理所有名为Number.png文件,第二个处理所有名为Number_thumb.png文件。
#!/bin/sh for number in `ls -1 images/*.png | grep -v thumb | grep -v "-" | cut -f2 -d / | cut -f1 -d .` do if [ ! -e "./images/$number-1.png" ] ; then cp images/"$number.png" images/"$number-1.png" fi rm ./images/"$number.png" done; for number in `ls -1 images/*.png | grep thumb | grep -v "-" | cut -f2 -d / | cut -f1 -d . | cut -f1 -d _` do echo $number if [ ! -e "./images/$number-1_thumb.png" ] ; then cp images/"$number"_thumb.png images/"$number-1_thumb.png" fi rm ./images/"$number"_thumb.png done;