LINUX.ORG.RU

История изменений

Исправление Zmicier, (текущая версия) :

что я написал в открывающем тему посте, это реально работающий скрипт.

Что не отменяет того, что он ужасен.

Нужно просто добавить нечто, чтобы он по всем ... прошелся.

Со всей очевидностью это «нечто» зовется рекурсией.

Ладно, держите набросок. Не проверял, могут быть ошибки вплоть до синтаксических.

#!/bin/bash

shopt -s nullglob

cd "$1"

for filename in *; do
    newfilename="${filename//[^.[:alnum:]]/_}"
    newfilename="${newfilename,,}" # to lowercase
    [[ "$filename" != "$newfilename" ]] \
        && mv -- "./$filename" "./$newfilename"
done

for dirname in */; do
    "$0" "$dirname"
done

Исправление Zmicier, :

что я написал в открывающем тему посте, это реально работающий скрипт.

Что не отменяет того, что он ужасен.

Нужно просто добавить нечто, чтобы он по всем ... прошелся.

Со всей очевидностью это «нечто» зовется рекурсией.

Держите набросок вообще без файнда. Не проверял, могут быть ошибки вплоть до синтаксических.

#!/bin/bash

shopt -s nullglob

cd "$1"

for filename in *; do
    newfilename="${filename//[^.[:alnum:]]/_}"
    newfilename="${newfilename,,}" # to lowercase
    [[ "$filename" != "$newfilename" ]] \
        && mv -- "./$filename" "./$newfilename"
done

for dirname in */; do
    "$0" "$dirname"
done

Исходная версия Zmicier, :

что я написал в открывающем тему посте, это реально работающий скрипт.

Что не отменяет того, что он ужасен.

Нужно просто добавить нечто, чтобы он по всем ... прошелся.

Со всей очевидностью это «нечто» зовется рекурсией.

Ладно, держите набросок. Не проверял, могут быть ошибки вплоть до синтаксических.

#!/bin/bash

shopt -s nullglob

cd "$1"

for filename in *; do
    newfilename="${filename//[^.[:alnum:]]/_}"
    newfilename="${newfilename,,}" # to lowercase
    [[ "$filename" != "$newfilename" ]] \
        && mv -- "./$filename" "./$newfilename"
done

for dirname in */; do
    "$0" "$dirname"
done