Есть ли способ пакетного переименования файлов в подкаталогах?
Например:
Переименуйте *.html в *.htm в папке, в которой есть каталоги и подкаталоги.
Есть ли способ пакетного переименования файлов в подкаталогах?
Например:
Переименуйте *.html в *.htm в папке, в которой есть каталоги и подкаталоги.
Командная строка Windows: (если внутри пакетного файла, измените %x на %%x)
for /r %x in (*.html) do ren "%x" *.htm
Это также работает для переименования середины файлов
for /r %x in (website*.html) do ren "%x" site*.htm
for /r %x in (website*.html) do ren "%x" site*.htm
- person jonnybot; 30.10.2013
В питоне
import os
target_dir = "."
for path, dirs, files in os.walk(target_dir):
for file in files:
filename, ext = os.path.splitext(file)
new_file = filename + ".htm"
if ext == '.html':
old_filepath = os.path.join(path, file)
new_filepath = os.path.join(path, new_file)
os.rename(old_filepath, new_filepath)
В Bash вы можете сделать следующее:
for x in $(find . -name \*.html); do
mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done
Я уверен, что есть более элегантный способ, но вот первое, что пришло мне в голову:
for f in $(find . -type f -name '*.html'); do
mv $f $(echo "$f" | sed 's/html$/htm/')
done
Если у вас есть файлы forfiles (я думаю, они поставляются с Windows XP и 2003 и более новыми вещами), вы можете запустить:
forfiles /S /M *.HTM /C "cmd /c ren @file *.HTML"
В Linux вы можете использовать команду 'rename для пакетного переименования файлов.
AWK в Linux. Для первого каталога это ваш ответ ... Экстраполируйте, рекурсивно вызывая awk на dir_path, возможно, написав другой awk, который записывает этот точный awk ниже ... и так далее.
ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh
В Unix вы можете использовать rnm:
rnm -rs '/\.html$/.htm/' -fo -dp -1 *
Or
rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *
Объяснение:
-ns : строка имени (новое имя). /n/ — это правило строки имени, которое заменяется на имя файла без расширения.-ss : строка поиска (регулярное выражение). Ищет файлы с совпадением.-rs : заменить строку вида /search_regex/replace_part/modifier-fo : только файловый режим-dp : глубина каталога (-1 означает неограниченный).