Рекурсивная замена пробелов на подчеркивания в именах файлов и каталогов: различия между версиями

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Строка 1: Строка 1:
Скрипт позволяющий рекурсивно заменять пробелы на подчеркивание.
Скрипт позволяющий заменять пробелы на подчеркивание.
 
С помощью утилиты '''find''' указываем директории в которых хотим работать, '''while''' осуществляет циклическое действие, '''mv''' переименовывает файлы, '''echo''' выводит файлы для работы '''sed''', ну и, собственно, присходит замена.


----
----
<source lang="bash">
<source lang="bash">
find path1 path2 -type f -iname '*.ogg' | while read file
find path1 path2 -type f | while read full  # find - ищет файлы в указанном пути, while - осуществляет циклическое действие
do
do
mv -- "${file}" "${file// /_}"
name=${full##*/}                            # вырезаем имя файла, функция убирает все до последнего слеша "/", оставляя только имя файла
mv -- "${full}" "${full%/*}/${name// /_}"   # перемещаем старый файл (полное имя которого в переменной full) в новый, образованный
                                            # именем файла (переменная name, в которой сделана замена пробела на _) и путем
                                            # к нему (получен методом обрезания полного имени файла до первого слеша)
done
done
</source>
</source>
----
----
Для замены пробелов в именах каталогов сменить '''-type f''' на '''-type d''', либо убрать вообще для замены как в именах файлов, так и каталогов.
 
Скрипт для работы с директориями в процессе разработки.


[[Category:Sed]][[Category:Bash-скрипт]][[Категория:Скрипт]]
[[Category:Sed]][[Category:Bash-скрипт]][[Категория:Скрипт]]

Версия 17:34, 5 декабря 2008

Скрипт позволяющий заменять пробелы на подчеркивание.


find path1 path2 -type f | while read full   # find - ищет файлы в указанном пути, while - осуществляет циклическое действие
do
name=${full##*/}                             # вырезаем имя файла, функция убирает все до последнего слеша "/", оставляя только имя файла
mv -- "${full}" "${full%/*}/${name// /_}"    # перемещаем старый файл (полное имя которого в переменной full) в новый, образованный 
                                             # именем файла (переменная name, в которой сделана замена пробела на _) и путем
                                             # к нему (получен методом обрезания полного имени файла до первого слеша)
done

Скрипт для работы с директориями в процессе разработки.