Я работаю в CentOS с bash, и у меня есть файлы в следующем каталоге:
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
Я бы хотел сделать следующее:
Однако мои сценарии оболочки недостаточно хороши, чтобы приблизиться к этому. Это все, что у меня есть - может ли кто-нибудь помочь?
#!/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;