Если это для интерактивного использования, введите :и выполните первую команду в обычном режиме. Затем введите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
}
Вместо | paste -sd+ -| bc
можно использоватьawk
:
find... | awk '{s+=$0} END {print s/3600}'
Это будет печатать часы с десятичными знаками, но если вы хотите более расширенный вывод, например часы :минуты :секунды, отметьте, например,. здесь или здесь или отметьте вариант exiftool
по ссылке в вашем Вопросе.
Это сводится к тому, как разделить число из вывода команды на 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
).