Получить общую продолжительность видеофайлов в каталоге в часах

Если это для интерактивного использования, введите :и выполните первую команду в обычном режиме. Затем введитеcdПробелM -.(вы можете ввести M -. либо как Esc. или как Alt + .). Сочетание клавиш M -.(yank-last-arg)вставляет последнее слово предыдущей команды.

Если это для сценариев :, поместите имя каталога в переменную. Не забывайте двойные кавычки при использовании переменной .

target_dir=~/my_first_subfolder/my_second_subfolder/more_subfolders
cp fileFromMyFriend.txt "$target_dir"
cd "$target_dir"

Если вы обнаружите, что часто используете одну и ту же последовательность команд, определите функцию . Приведенная ниже функция bash вызывает cpи обрабатывает последний аргумент как каталог для перехода. Если последний аргумент не является каталогом или символической ссылкой на каталог, он меняется на каталог, содержащий последний аргумент. Это работает для большинства способов использования cp, но не с опцией -tдля GNU cp.

cp_cd () {
  cp "$@"
  if [ -d "${!#}/." ]; then
    cd -- "${!#}"
  else
    cd -- "$(dirname -- "${!#}")"
  fi
}

0
20.11.2020, 11:36
2 ответа

Вместо | paste -sd+ -| bcможно использоватьawk:

find... | awk '{s+=$0} END {print s/3600}'

Это будет печатать часы с десятичными знаками, но если вы хотите более расширенный вывод, например часы :минуты :секунды, отметьте, например,. здесь или здесь или отметьте вариант exiftoolпо ссылке в вашем Вопросе.

2
18.03.2021, 22:48

Это сводится к тому, как разделить число из вывода команды на 3600.

Что можно сделать с:

... | awk '{print $0 / 3600}'

Хотя здесь все можно сделать с помощью:

exiftool -r -n -q -p '${Duration;$_ = (our $total += $_) / 3600}'. | tail -n 1

(или $_ = ConvertDuration(our $total += $_), чтобы выразить это как4 days 22:14:59).

2
18.03.2021, 22:48

Теги

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