Подтвердить что ты не робот

Как переименовать файлы в подкаталогах?

Есть ли способ пакетного переименования файлов в подкаталогах?

Например:

Переименуйте *.html в *.htm в папке, в которой есть каталоги и подкаталоги.

4b9b3361

Ответ 1

Командная строка Windows: (Если внутри пакетного файла, измените% x на %% x)

for /r %x in (*.html) do ren "%x" *.htm

Это также работает для переименования середины файлов

for /r %x in (website*.html) do ren "%x" site*.htm

Ответ 2

Для окон это лучший инструмент, который я нашел:

http://www.1-4a.com/rename/

Он может делать что угодно И имеет кухонную раковину с ним.

Для Linux у вас есть множество языков сценариев и оболочек, которые помогут вам, как и предыдущие ответы.

Ответ 3

find . -regex ".*html$" | while read line;
 do 
    A=`basename ${line} | sed 's/html$/htm/g'`;
    B=`dirname ${line}`;
    mv ${line} "${B}/${A}";
 done

Ответ 4

В python

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)

Ответ 5

В Bash вы можете сделать следующее:

for x in $(find . -name \*.html); do
  mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done

Ответ 6

Я уверен, что там более элегантный способ, но вот первое, что появилось в моей голове:

for f in $(find . -type f -name '*.html'); do 
    mv $f $(echo "$f" | sed 's/html$/htm/')
done

Ответ 7

Если у вас есть файлы forfiles (он поставляется с Windows XP и 2003 и более новыми, я думаю), вы можете запустить:

forfiles/S/M *.HTM/C "cmd/c ren @file *.HTML"

Ответ 8

В Linux вы можете использовать команду rename для переименования файлов в пакетном режиме.

Ответ 9

In bash use command rename :)

 rename 's/\.htm$/.html/' *.htm

 # or

 find . -name '*.txt' -print0 | xargs -0 rename 's/.txt$/.xml/'

 #Obs1: Above I use regex \. --> literal '.'  and  $ --> end of line
 #Obs2: Use find -maxdepht 'value' for determine how recursive is
 #Obs3: Use -print0 to avoid 'names spaces asdfa' crash!

Ответ 10

Total Commander, который является приложением для файлового менеджера, позволяет вам перечислить и выбрать все файлы в своих каталогах, dirs, то вы можете запустить любую из полных операций командира на них. одним из которых является: многократное переименование выбранных файлов.

Ответ 11

AWK в Linux. Для первого каталога это ваш ответ... Экстраполируйте путем рекурсивного вызова awk на dir_path, возможно, написав еще один awk, который пишет этот точный awk ниже... и т.д.

ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh

Ответ 12

В Windows я создал удобное решение litte VBScript с поддержкой переименования на основе regex и поддержкой Drag & Drop. Попробуйте, если хотите, поместите его в файл vbs и поместите в него папку в Проводнике.

Ответ 13

В Windows Переименование неплохо справляется с этим. Freeware, но не с открытым исходным кодом.

Ответ 14

В Windows вы можете найти приложение с открытым исходным кодом простого С# массового файла renamer в https://filerenamer.codeplex.com работает с простым файлом excel. Дайте файл excel с двумя столбцами источник и пункт назначения для этого приложения, и это было сделано.

Ответ 15

В Unix вы можете использовать rnm:

rnm -rs '/\.html$/.htm/' -fo -dp -1 *

Или

rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *

Пояснение:

  • -ns: строка имени (новое имя). /n/ - это правило строки имени, которое расширяется до имени файла без расширения.
  • -ss: строка поиска (регулярное выражение). Ищет файлы с совпадением.
  • -rs: заменить строку формы /search_regex/replace_part/modifier
  • -fo: режим только файла
  • -dp: глубина директории (-1 означает неограниченную).