Единственным путем я могу думать для сокращения второй опции в Вашем вопросе:
for dir in /home/*;do
[ -d $dir/tmp ] && mv -n $dir/t{,e}mp
done
но это покончило с удобочитаемостью несколько. Отметьте это t{,e}mp
расширен оболочкой в эти два слова tmp
и temp
. Таким образом, командная строка была бы расширена до mv <contents of $dir>/tmp <contents of $dir>/temp
. В целом оболочка расширяется prefix_{a,b,c}_suffix
кому: prefix_a_suffix prefix_b_suffix prefix_c_suffix
. Пустое положение, такое как первое в {,e}
расширен в пустую строку.
Можно также сделать что-то похожее с perl
:
perl -e '
@a=grep {-d} glob "/home/*/tmp";
map { rename $_ => $_=~ s/tmp\Z/temp" } @a
'
но я все еще поддерживаю, что Ваша исходная версия была достаточно хороша.
Править
Добавленный -n
переключатель к mv
гарантировать это не ударит $dir/temp
если это существует, как отмечено в комментарии Michael Kjörling к вопросу. Версия Perl ударит temp
если это существует.
Кажутся, что это игнорирует параметры настройки в расчете на пользователя. Можно изменить настройки в масштабе всей системы путем редактирования /etc/mailcap.order
, синтаксис довольно прост:
first-choice-app-name:mime-type
second-choice-app-name:mime-type
...
, Таким образом, вы, вероятно, поместили:
evince-previewer:application/pdf
evince:application/pdf
(проявлять-программа-предварительного-просмотра является довольно новой, может не существовать в Хрипящем, но наличие его, там безопасно).
Затем вы работаете /usr/sbin/update-mime
для обновления /etc/mailcap
.
Alpine считывает настройки "mailcap" для каждого пользователя из ~ / .mailcap
, которые перекрывают общесистемные / etc / mailcap
. Так что просто поместите следующую строку в ~ / .mailcap
:
application/pdf; evince %s