Я взял это в качестве проблемы остроты :) Во-первых, установите тестовый сценарий:
$ for d in foo Bar eVe; do mkdir -p dcthis/$d; touch dcthis/a${d}.txt; done
$ ls dcthis/
Bar aBar.txt aeVe.txt afoo.txt eVe foo
Я использую find
определить каталоги с прописными буквами и затем downcase их через sh -c 'mv {}
. Угадайте использование echo {} | tr [:upper:] [:lower:]
'sh -c
немного выхода взлома, но моя голова всегда взрывается, когда я пытаюсь выйти из вещей для find
непосредственно.
$ (cd dcthis && find . -maxdepth 1 -type d -path '*[A-Z]*' -exec sh -c 'mv {} `echo {} | tr [:upper:] [:lower:]`' \;)
$ ls dcthis/
aBar.txt aeVe.txt afoo.txt bar eve foo
Будьте осторожны: Это решение не проверяет, приводит ли downcasing к коллизиям!
Принятие Вы используете adduser
для создания пользователя это сделает большую часть задания, предполагая создание каталога /etc/skel/MyStevedore
с Вашими желаемыми полномочиями. Однако в большинстве систем ~/MyStevedore
будет всегда принадлежать основной группе пользователя.
На Debian и производных (включая Ubuntu), однажды adduser
создал пользователя, это звонит /usr/local/sbin/adduser.local
если это существует. Можно использовать его для завершения задания.
#!/bin/sh
username=$1 uid=$2 gid=$3 home_dir=$4
if [ -d "$home_dir/MyStevedore" ]; then
chgrp stevedore "$home_dir/MyStevedore"
fi
Вы могли добавить, если оператор к .bash_profile сценарию в/etc/skel, который проверит, существует ли папка. Если это не будет существовать, то это создаст его и установит полномочия.
В первый раз, когда новый пользователь входит в систему, папка будет создана.