1

我想从命令行重命名多个文件(我正在使用 Windows)。重命名前:

fileA.txt
fileB.txt
fileC.txt

重命名后:

1_fileA.txt
2_fileB.txt
3_fileC.txt

顺便说一句,即使我使用的是 Windows,但我有 sed、grep、awk 之类的工具……但我找不到使用它们的方法

4

3 回答 3

1

直接从命令行:

for /f "delims=: tokens=1,2" %A in ('dir /b *.txt^|findstr /n .') do @ren "%B" "%A_%B"
于 2013-09-13T21:54:55.760 回答
1

使用 cygwin 和 bash 的一种方法:

$ n=1

$ ls
fileA.txt  fileB.txt  fileC.txt

$ for i in *.txt; do mv $i ${n}_${i}; ((n++)); done

$ ls
1_fileA.txt  2_fileB.txt  3_fileC.txt
于 2013-09-13T11:51:45.740 回答
1

您可以使用批处理文件:

@echo off
setlocal enabledelayedexpansion
set i=0
for %%a in (*.*) do (
    set /a i=i+1
    ren %%a !i!%%a
)

将其保存到不同目录中的文件,然后转到文件所在的目录。之后在 cmd.exe 命令提示符下运行:

call X:\path\to\file.bat

基于 ls、awk、xargs 和 mv:

ls *.* | awk {printf("\"%s\""\x20""\"%d%s\"\n",$0,NR,$0)} | xargs mv
于 2013-09-13T11:53:24.937 回答