Wiki
Clone wikicomp-house.repo / mass-rename-files
Как переименовать сотни файлов из *.htm в *.html
Задача:
Есть множество файлов, например, file1.htm file2.htm file3.htm
Необходимо переименовать их в file1.html file2.html file3.html
Понятно, что если таких файлов не три а триста, подиночке их не переименуешь....
Решение:
для перименования файлов существует замечательная утилита rename.
$rename .htm .html *.htm
Первый аргумент - что мы меняем, второй аргумент, на что меняем и последний задает файлы для обработки.
Как вариант, можно соединить мощь rename и find, чтобы найти и переименовать все файлы .html
find ./ -name "*.htm" | xargs rename ".htm" ".html"
Чуть более сложный вариант, который позволяет не беспокоиться о пробелах в именах файлов и директорий:
find ./ -name "*.htm" -print0 | xargs -0 rename ".htm" ".html"
А вот какие варианты решения этой задачи предлагает Unix Blog.
Вариант №1
[root@unixguy scripts]# ls file1.htm file2.htm file3.htm [root@unixguy scripts]# for list in `ls -1t *.htm*` > do > prefix=`echo $list | awk -F"\." '{print $1}'` > mv $list ${prefix}.html > done [root@unixguy scripts]# ls file1.html file2.html file3.html
Вариант №2
[root@unixguy scripts]# ls file1.html file2.html file3.html [root@unixguy scripts]# ls *.html | awk -F '.' '{print "mv "$1".html "$1".htm"}'| csh [root@unixguy scripts]# ls file1.htm file2.htm file3.htm
Updated