Вы можете использовать apache userdir для этого. См. Это сообщение для деталей: Apache, символически привязанный к домашнему каталогу - ошибки разрешения
Переименование достаточно просто с небольшим преобразованием с помощью rename. Следующее - инертное (удалите флаг -n, чтобы заставить его делать что-то), и он скажет вам, что он делает:
rename 'tr/A-Z/a-z/' -vn *
Однако, если вы хотите построить это в обратимом скрипте, вы нужно сделать немного больше:
rename 'tr/A-Z/a-z/' -vn * | sed 's/ renamed as /#/' | awk -F'#' '{print "mv '\''" $2 "'\'' '\''" $1 "'\''"}' > reverse.sh
Если вам нужно изменить список файлов, входящих в это (например, рекурсивный), вы можете либо называть имена в rename: [ ! d3]
find | rename ...
Или используйте некоторые параметры Bash для рекурсивного воспроизведения:
shopt -s globstar
rename ... ** *
#!/bin/bash
IFS=$'\n'
WORKING_PATH=$(pwd $1)
RESTORE_FILENAME="$WORKING_PATH/restore_case.sh"
echo "#!/bin/bash" > "$RESTORE_FILENAME"
chmod a+x "$RESTORE_FILENAME"
for FILEPATH in $(find . -type f)
do
FILENAME="${FILEPATH##*/}"
LOWER_FILE="${FILEPATH::-${#FILENAME}}${FILENAME,,}"
if [ "$LOWER_FILE" != "$FILEPATH" ]; then
echo moving "$FILEPATH" to "$LOWER_FILE"
echo mv \""$LOWER_FILE"\" \""$FILEPATH"\" >> "$RESTORE_FILENAME"_files
mv "$FILEPATH" "$LOWER_FILE"
fi
done
touch "$RESTORE_FILENAME"_dirs
for DIRPATH in $(find . -type d -printf "%d%p\n"|sort -nr)
do
DIRPATH=${DIRPATH:1}
DIRNAME="${DIRPATH##*/}"
LOWER_DIRPATH="${DIRPATH::-${#DIRNAME}}${DIRNAME,,}"
if [ "$LOWER_DIRPATH" != "$DIRPATH" ]; then
echo moving "$DIRPATH" to "$LOWER_DIRPATH"
echo -e "mv \""$LOWER_DIRPATH"\" \""$DIRPATH"\"\n$(cat "$RESTORE_FILENAME"_dirs)" > "$RESTORE_FILENAME"_dirs
mv "$DIRPATH" "$LOWER_DIRPATH"
fi
done
cat "$RESTORE_FILENAME"_dirs "$RESTORE_FILENAME"_files >> "$RESTORE_FILENAME"
rm "$RESTORE_FILENAME"_dirs "$RESTORE_FILENAME"_files
echo rm '$0' >> "$RESTORE_FILENAME"
дольше, немного грязно, но более точно, также не делает ненужных mv