簡體   English   中英

如何重命名文件夾中的所有文件並創建重命名映射

[英]How to rename all files in a folder and create a renaming map

注意:我可以同時訪問Linux和Windows平台,因此這些平台中的任何一個的答案都可以。

我有一個包含少於10K .png文件的文件夾。 我想要:

1. rename all files as follows:

    <some_filename>.png to 0001.png
    <some_other_name>.png to 0002.png
    <another_name>.png to 0003.png
    and so on...

2. keep this name mapping in a file (see 1 for mapping)

在Windows中:這應按字母順序對列表進行排序,並全部用數字重命名,並填充為4個字符。

它寫入執行重命名的bat文件。 您可以在重命名和運行它之前對其進行檢查,並且可以兼作文件名的映射。

帶有!的文件名 字符可能是一個問題。

@echo off
setlocal enabledelayedexpansion
set c=0
for %%a in (*.png) do (
set /a c=c+1
set num=0000!c!
set num=!num:~-4!
>>renfile.bat.txt echo ren "%%a" "!num!%%~xa"
)

要重命名當前目錄中的所有.png文件並將重命名映射保存到renaming-map.txt文件:

$ perl -E'while (<*.png>) { $new = sprintf q(%04d.png), ++$i; say qq($_ $new); 
    rename($_, $new) }' > renaming-map.txt

例如,給定以下目錄內容:

$ ls
a.png  b.png  c.png  d.png  e.png  f.png  g.png  h.png  i.png  j.png

它產生:

$ perl -E'while (<*.png>) { $new = sprintf q(%04d.png), ++$i; say qq($_ $new); 
    rename($_, $new) }' 
a.png 0001.png
b.png 0002.png
c.png 0003.png
d.png 0004.png
e.png 0005.png
f.png 0006.png
g.png 0007.png
h.png 0008.png
i.png 0009.png
j.png 0010.png

結果:

$ ls
0001.png  0003.png  0005.png  0007.png  0009.png
0002.png  0004.png  0006.png  0008.png  0010.png

如果可以使用perl,它應該在Windows和Linux上都可以工作(在Windows上用perl -E "..."替換perl -E'...' (單引號->雙引號))。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM