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

39
задан jww 4 May 2019 в 18:04
поделиться

12 ответов

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

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

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

for /r %x in (website*.html) do ren "%x" site*.htm
75
ответ дан Brian Webster 27 November 2019 в 02:14
поделиться

В Windows Переименовывание делает довольно хорошее задание в этом. Бесплатное программное обеспечение, но не открытый исходный код.

0
ответ дан lImbus 27 November 2019 в 02:14
поделиться

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

0
ответ дан Tomalak 27 November 2019 в 02:14
поделиться
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!
1
ответ дан 27 November 2019 в 02:14
поделиться

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

for f in $(find . -type f -name '*.html'); do 
    mv $f $(echo "$f" | sed 's/html$/htm/')
done
2
ответ дан paxdiablo 27 November 2019 в 02:14
поделиться

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

for x in $(find . -name \*.html); do
  mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done
3
ответ дан paxdiablo 27 November 2019 в 02:14
поделиться

В 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
ответ дан monkut 27 November 2019 в 02:14
поделиться
find . -regex ".*html$" | while read line;
 do 
    A=`basename ${line} | sed 's/html$/htm/g'`;
    B=`dirname ${line}`;
    mv ${line} "${B}/${A}";
 done
6
ответ дан Aditya Mukherji 27 November 2019 в 02:14
поделиться

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

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

Это может сделать что-либо И имеет раковину с ним.

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

8
ответ дан moogs 27 November 2019 в 02:14
поделиться

На Linux можно использовать' , переименовывают ' команда для переименования файлов в пакете.

1
ответ дан ayaz 27 November 2019 в 02:14
поделиться

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

ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh
0
ответ дан Alex 27 November 2019 в 02:14
поделиться

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

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

2
ответ дан 27 November 2019 в 02:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: