Как добавить необходимое количество нулей к числам, содержащимся в именах изображений?

смотрите здесь...

https://stackoverflow. com/questions/2712173/check-the-total-content-size-of-a-tar-gz-file

$ tar tzvf archive.tar.gz | sed 's/ \+/ /g' | cut -f3 -d' ' | sed '2,$s/^/+ /' | paste -sd' ' | bc

gzsize 

2
22.03.2016, 23:44
1 ответ

Следующая функция вычисляет количество необходимых цифр (1 для 9 файлов, 2 для 99 файлов и т.д. )и переименовывает файлы с первой цифрой в имени файла, дополненной соответственно нулями:

pad_numbers_with_zeros(){
  folder="$1"
  [[ -d "$folder" ]] || { echo 'need directory argument' && return; }
  extension="$2"
  [[ -z "$extension" ]] && extension=wav
  digits="$3"
  if [[ -z "$digits" ]]; then
    amount=$(ls "$folder"/*.$extension | wc -l)
    digits=$(echo "l($amount)/l(10)+1" | bc -l)
  fi
  fmt=$(printf '%%0%dd' $digits)
  for f in "$folder"/*.$extension; do
    bn=$(basename "$f")
    number=$(echo $bn | sed -re 's/^[^[:digit:]]*0*([[:digit:]][[:digit:]]*)[^[:digit:]].*/\1/')
    [[ "$bn" == "$number" ]] && continue
    pf_pat=$(echo $bn | sed -re "s/0*$number/$fmt/")
    new_path=$(printf "$folder/$pf_pat" $number)
    [[ "$f" != "$new_path" ]] &&  mv -i "$f" "$new_path"
  done
}

Для файлов.jpg-вызов со вторым аргументом jpg. Конечно, это имеет смысл только в том случае, если в именах файлов есть последовательные числа. В качестве альтернативы количество желаемых цифр может быть передано в качестве третьего аргумента.

0
27.01.2020, 22:48

Теги

Похожие вопросы