Сценарий Bash для редактирования файлов .ics

Я хотел бы создать скрипт bash для выбора из файлов .ics в папке, затем выполнить поиск и замену в этом выбранном файле, а затем сохранить и переименовать этот файл. Я собрал некоторые вещи из поисков, но не знаю, что я делаю, чтобы все это работало ...

Вот что у меня есть для меню:

[ f1]

Это код, который я сейчас использую для редактирования файлов .ics, но он меняет ВСЕ файлы .ics в текущем каталоге:

#!/bin/bash

###Fixes all .ics files to give ALL DAY events rather than 0000-2359  
####All .ics files
FILES="*.ics"


# for loop read each file
for f in $FILES
do
INF="$f"

##Change DTSTART:[yyyymmddThhmmss] to DTSTART;VALUE=DATE...##

sed -i[org] 's/DTSTART:2016/DTSTART;VALUE=DATE:2016/g' $INF

sed -i[org] 's/T[0-9][0-9][0-9][0-9][0-9][0-9]/ /g' $INF

###Remove DTEND:###
sed -i[org] 's/DTEND:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ /g'$INF

done

Как я могу собрать все это вместе для достижения моя цель ??

1
задан 21 September 2016 в 21:18

1 ответ

Хорошо, я понял это. Вот мой код:

#!/bin/bash


shopt -s nullglob

echo 'The following `*.ics` files were found; select one:'

select f in *.ics "Quit"; do
  case $f in
    "Quit")
      echo "Quitting"
      break
      ;;
    *)
      if [ -z "$f" ]; then
        echo "Invalid menu selection"
      else
        echo "Creating all-day events in $f"
          ##Change DTSTART:[yyyymmddThhmmss] to DTSTART;VALUE=DATE...##
          sed -i.orig 's/DTSTART:2016/DTSTART;VALUE=DATE:2016/g' "$f"
          sed -i.orig 's/T[0-9][0-9][0-9][0-9][0-9][0-9]/ /g' "$f"
          ###Remove DTEND:###
          sed -i.orig  's/DTEND:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ /g' "$f"
      fi
      ;;
    esac
done

Есть ли способ повторить меню после действительного или недействительного ответа? (Извините, я немного новичок в этом материале bash, пытаясь учиться, когда я ухожу.)

0
ответ дан 23 May 2018 в 05:55

Другие вопросы по тегам:

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