Назад | Перейти на главную страницу

Bash: проверка уникальности имен файлов, переименование или удаление файлов

Я работаю в 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;