История изменений
Исправление mky, (текущая версия) :
У mv явно указывайте опцию -n, во избежания перезаписи.
Лучше сначала переименовать каталоги, а то ещё встрянете с MAX_PATH=4096. То есть нельзя, чтобы полное имя файла (с каталогами) было больше этого числа. Если что, нужно заходить в этот каталог, и там указывать относительное имя файла.
Каталоги нужно переименовывать от самых нижних к верхним. На bash писать рекурсивный обход каталогов сложно, проще написать скрип, переименовывающий один каталог и пусть find вызвает его, причём со сменой каталога. То есть скрипт запускается в том подкаталоге, где очередной каталог, начиная от самых вложеных. И в скрипте переименовывать $1, без добавления к нему спереди dirname.
find . -depth -type d -execdir SCRPT-PATH {} \; > /tmp/LOG.txt
То есть созадёте файл, там где можно исполняемые скрипты, (не знаю что там обрезает Альфа), примерно такого содержания:
#!/bin/bash
name=$(basename "$1")
new_name=$(printf "%s" "$name" | tr -d '.!?",~*^;:`')
# Здесь обрезка длины имени каталога, если надо
if [ "$name" != "$new_name" ]; then
echo "Переименовываю $PWD/name в $new_name"
mv -n -- "$1" "$new_name"
if [ $? != 0 ] ; then
echo "Неудачное преименовывание $PWD/name"
fi
else
echo "Имя $PWD/name не требует изменений."
fi
Исходная версия mky, :
У mv явно указывайте опцию -n, во избежания перезаписи.
Лучше сначала переименовать каталоги, а то ещё встрянете с MAX_PATH=4096. То есть нельзя, чтобы полное имя файла (с каталогами) было больше этого числа. Если что, нужно заходить в этот каталог, и там указывать относительное имя файла.
Каталоги нужно переименовывать от самых нижних к верхним. На bash писать рекурсивный обход каталогов сложно, проще написать скрип, переименовывающий один каталог и пусть find вызвает его, причём со сменой каталога. То есть скрипт запускается в том подкаталоге, где очередной каталог, начиная от самых вложеных. И в скрипте переименовывать $1, без добавления к нему спереди dirname.
find . -depth -type d -execdir SCRPT-PATH {} \; > /tmp/LOG.txt
То есть созадёте файл, там где можно исполняемые скрипты, (не знаю что там обрезает Альфа), примерно такого содержания:
#!/bin/bash
name=$(basename "$1")
new_name=$(printf "%s" "$name" | tr -d '.!?",~*^;:`')
# Здесь обрезка длины имени каталога, если надо
if [ "$name" != "$new_name" ]; then
echo "Переименовываю $PWD/name в $new_name"
mv -n -- "$1" "$new_name"
if [ $? != 0 ] ; then
echo "Неудачное преименовывание $PWD/name"
fi
else
echo "Имя $PWD/name не требует изменений."
fi