RnR เป็นเครื่องมือบรรทัดคำสั่งเพื่อ เปลี่ยนชื่อไฟล์และไดเร็กทอรีหลายรายการอย่างปลอดภัย ซึ่งรองรับนิพจน์ทั่วไป
คุณสามารถดาวน์โหลดไบนารีได้จากหน้ารุ่นล่าสุด เลือกไฟล์บีบอัดที่ตรงกับแพลตฟอร์มของคุณ ไฟล์บีบอัดเหล่านี้ประกอบด้วยไฟล์ปฏิบัติการและเนื้อหาเพิ่มเติมอื่นๆ เช่น ไฟล์ที่สมบูรณ์ ( Bash , Zsh , fish และ PowerShell )
มีแพ็คเกจอยู่ใน AUR ( rnr
) เพื่อติดตั้ง RnR เวอร์ชันล่าสุดบน Arch Linux
คุณสามารถใช้ตัวจัดการแพ็คเกจ Homebrew เพื่อติดตั้งเครื่องมือนี้ในระบบ macOS หรือ Linux
brew install rnr
RnR เขียนด้วยภาษาสนิม คุณสามารถสร้างได้จากแหล่งที่มาโดยใช้ Cargo
git clone https://github.com/ismaelgv/rnr .
cargo install
cargo install rnr
USAGE:
rnr [FLAGS] [OPTIONS] <EXPRESSION> <REPLACEMENT> <PATH(S)>...
rnr [FLAGS] [OPTIONS] <SUBCOMMAND>
FLAGS:
-b, --backup Generate file backups before renaming
-n, --dry-run Only show what would be done (default mode)
--dump Force dumping operations into a file even in dry-run mode
-f, --force Make actual changes to files
-h, --help Prints help information
-x, --hidden Include hidden files and directories
-D, --include-dirs Rename matching directories
--no-dump Do not dump operations into a file
-r, --recursive Recursive mode
-s, --silent Do not print any information
-V, --version Prints version information
OPTIONS:
--color <color> Set color output mode [default: auto] [possible values: always, auto, never]
-d, --max-depth <LEVEL> Set max depth in recursive mode
-l, --replace-limit <LIMIT> Limit of replacements, all matches if set to 0 [default: 1]
ARGS:
<EXPRESSION> Expression to match (can be a regex)
<REPLACEMENT> Expression replacement
<PATH(S)>... Target paths
SUBCOMMANDS:
from-file Read operations from a dump file
help Prints this message or the help of the given subcommand(s)
to-ascii Replace all file name chars with ASCII chars. This operation is extremely lossy.
regex
คุณสามารถตรวจสอบไวยากรณ์ regex ได้ที่นี่ รองรับ กลุ่มการจับ ที่มีหมายเลขและตั้งชื่อfrom-file
หมายเหตุของ WINDOWS: ในตัวอย่างที่ใช้ *
คุณต้องขยายไวด์การ์ดใน PowerShell เช่น: rnr ab (Get-Item ./*)
สิ่งนี้ไม่รองรับใน cmd.exe
คุณสามารถส่งรายการไฟล์ที่จะเปลี่ยนชื่อเป็นอาร์กิวเมนต์ได้:
rnr -f file renamed ./file-01.txt ./one/file-02.txt ./one/file-03.txt
ต้นไม้เดิม
.
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── file-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── renamed-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── renamed-02.txt
└── renamed-03.txt
ไดเร็กทอรีจะถูกละเว้นตามค่าเริ่มต้น แต่คุณสามารถรวมไดเร็กทอรีเพื่อเปลี่ยนชื่อโดยใช้ตัวเลือก -D
ได้
rnr -f -D foo bar ./ *
ต้นไม้เดิม
.
├── foo
│ └── foo.txt
└── foo.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── bar
│ └── foo.txt
└── bar.txt
ขีดจำกัดการแทนที่ถูกกำหนดไว้ที่ 1 ตามค่าเริ่มต้น แต่คุณสามารถกำหนดค่าขีดจำกัดนี้เพื่อแทนที่รายการที่ตรงกันที่ไม่ทับซ้อนกันหลายรายการได้ การแข่งขันทั้งหมดจะถูกแทนที่หากตัวเลือกนี้ถูกตั้งค่าเป็น 0
rnr -f -l 0 o u ./ *
ต้นไม้เดิม
.
├── foo.txt
├── foofoo.txt
├── foofoofoo.txt
└── foofoofoofoo.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── fuu.txt
├── fuufuu.txt
├── fuufuufuu.txt
└── fuufuufuufuu.txt
คุณสามารถรวม rnr
เข้ากับเครื่องมือ UNIX อื่นๆ ได้โดยใช้ไปป์เพื่อส่งผ่านอาร์กิวเมนต์
find . -type f +mtime 1 | xargs rnr -f file renamed
cat file_list.txt | xargs rnr -f file rename
เนื้อหา file_list.txt
:
file-01.txt
one/file-02.txt
one/file-03.txt
หากผ่านตัวเลือกแบบเรียกซ้ำ ( -r
) rnr
จะค้นหาไฟล์ al ในพาธแบบเรียกซ้ำโดยไม่มีขีดจำกัดความลึก
rnr -f -r file renamed ./
ต้นไม้เดิม
.
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── two
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── three
├── file-01.txt
├── file-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── renamed-01.txt
├── renamed-02.txt
├── renamed-03.txt
└── one
├── renamed-01.txt
├── renamed-02.txt
├── renamed-03.txt
└── two
├── renamed-01.txt
├── renamed-02.txt
├── renamed-03.txt
└── three
├── renamed-01.txt
├── renamed-02.txt
└── renamed-03.txt
ในทำนองเดียวกัน คุณสามารถตั้งค่าความลึกของไดเร็กทอรีสูงสุดร่วมกับการดำเนินการแบบเรียกซ้ำได้
rnr -f -r -d 2 file renamed ./
ต้นไม้เดิม
.
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── two
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── three
├── file-01.txt
├── file-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── renamed-01.txt
├── renamed-02.txt
├── renamed-03.txt
└── one
├── renamed-01.txt
├── renamed-02.txt
├── renamed-03.txt
└── two
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── three
├── file-01.txt
├── file-02.txt
└── file-03.txt
rnr
ละเว้นไฟล์ที่ซ่อนไว้ตามค่าเริ่มต้น เพื่อเพิ่มความเร็วในการดำเนินการ และหลีกเลี่ยงปัญหากับไดเร็กทอรีบางรายการ เช่น .git/
หรือ .local/
คุณสามารถรวมไฟล์ที่ซ่อนผ่านตัวเลือก -x
ได้ นอกจากนี้คุณสามารถใช้ตัวเลือก include directory -D
กับ -r
ได้เช่นกัน
rnr -f -r -D -x foo bar ./
ต้นไม้เดิม
.
├── .foo_hidden_file.txt
├── foo.txt
├── foo
│ ├── foo.txt
│ └── foo
│ └── foo.txt
└── .foo_hidden_dir
└── foo.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── .bar_hidden_file.txt
├── bar.txt
├── bar
│ ├── bar.txt
│ └── bar
│ └── bar.txt
└── .bar_hidden_dir
└── bar.txt
เมื่อคุณดำเนินการเปลี่ยนชื่อ rnr
จะสร้างไฟล์ดัมพ์ในไดเร็กทอรีปัจจุบันที่คุณดำเนินการคำสั่งตามค่าเริ่มต้น ไฟล์นี้สามารถใช้เพื่อคืนค่าการดำเนินการได้อย่างง่ายดายโดยใช้ตัวเลือก from-file
และ -u
เปลี่ยนชื่อการดำเนินการ
rnr -f foo bar ./ *
เลิกทำการดำเนินการก่อนหน้า
rnr from-file -f -u rnr-[timestamp].json
หากคุณต้องการทำซ้ำการดำเนินการ เพียงแค่ส่งไฟล์ดัมพ์โดยไม่มีข้อโต้แย้งเพิ่มเติม:
rnr from-file -f rnr-[timestamp].json
rnr
สามารถสร้างไฟล์สำรองก่อนที่จะเปลี่ยนชื่อสำหรับการดำเนินการใด ๆ ที่ผ่านตัวเลือก -b
ชื่อไฟล์สำรองข้อมูลจะต้องไม่ซ้ำกันและจะไม่ถูกเขียนทับหากมีการสร้างข้อมูลสำรองอื่น หากคุณกำลังทำงานกับไฟล์ขนาดใหญ่จำนวนมาก โปรดทราบว่าไฟล์นั้นจะถูกทำซ้ำ
rnr -f -b file renamed ./ *
ต้นไม้เดิม
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── file-01.txt.bk
├── file-02.txt.bk
├── file-03.txt.bk
├── renamed-01.txt
├── renamed-02.txt
└── renamed-03.txt
rnr
สามารถแปลงชื่อไฟล์ UTF-8 เป็นตัวแทน ASCII ได้ คุณลักษณะนี้ใช้ไลบรารี AnyAscii เพื่อทำการทับศัพท์
คุณสามารถเรียกใช้:
rnr to-ascii ./ *
หรือ:
rnr to-ascii -r .
ต้นไม้เดิม
.
├── fïlé-01.txt
├── FïĹÊ-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── file-01.txt
├── FILE-02.txt
└── file-03.txt
ข้อมูลเพิ่มเติมเกี่ยวกับ regex ที่ใช้ในแพ็คเกจ regex
rnr -f '..*$' '.txt' ./*
ต้นไม้เดิม
.
├── file-01.ext1
├── file-02.ext2
└── file-03.ext3
เปลี่ยนชื่อเป็นต้นไม้
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
rnr -f 'd' '1' ./*
ต้นไม้เดิม
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── file-11.txt
├── file-12.txt
└── file-13.txt
name(1)-number(2).extension(3)
]rnr -f ' (w+)-(d+).(w+) ' ' ${2}-${1}.${3} ' ./ *
ต้นไม้เดิม
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── 01-file.txt
├── 02-file.txt
└── 03-file.txt
หมายเหตุ SHELL: ในเชลล์เช่น Bash และ zsh ตรวจสอบให้แน่ใจว่าได้รวมรูปแบบ REPLACEMENT
ด้วยเครื่องหมายคำพูดเดี่ยว มิฉะนั้น ดัชนีกลุ่มการจับจะถูกแทนที่ด้วยตัวแปรเชลล์ที่ขยาย
number
ext
.rnr -f ' (?P<number>d{2}).(?P<ext>w{3}) ' ' ${ext}.${number} ' ./ *
ต้นไม้เดิม
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
เปลี่ยนชื่อเป็นต้นไม้
.
├── file-txt.01
├── file-txt.02
└── file-txt.03