RnR adalah alat baris perintah untuk mengganti nama banyak file dan direktori yang mendukung ekspresi reguler dengan aman .
Anda dapat mengunduh binari dari halaman rilis terbaru, pilih file terkompresi yang sesuai dengan platform Anda. File terkompresi ini berisi konten tambahan yang dapat dieksekusi dan lainnya seperti file penyelesaian ( Bash , Zsh , fish , dan PowerShell ).
Sebuah paket tersedia di AUR ( rnr
) untuk menginstal RnR versi terbaru di Arch Linux.
Anda dapat menggunakan manajer paket Homebrew untuk menginstal alat ini di sistem macOS atau Linux.
brew install rnr
RnR ditulis dalam Rust. Anda dapat membangunnya dari sumber menggunakan 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
crate. Anda dapat memeriksa sintaks regex di sini. Ini mendukung grup penangkapan yang diberi nomor dan diberi nama.from-file
. WINDOWS CATATAN: Dalam contoh yang menggunakan *
, Anda perlu memperluas wildcard di PowerShell, misalnya: rnr ab (Get-Item ./*)
. Ini tidak didukung di cmd.exe
.
Anda dapat meneruskan daftar file yang akan diganti namanya sebagai argumen:
rnr -f file renamed ./file-01.txt ./one/file-02.txt ./one/file-03.txt
Pohon asli
.
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── file-02.txt
└── file-03.txt
Berganti nama menjadi pohon
.
├── renamed-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── renamed-02.txt
└── renamed-03.txt
Direktori diabaikan secara default tetapi Anda juga dapat memasukkannya untuk diganti namanya menggunakan opsi -D
.
rnr -f -D foo bar ./ *
Pohon asli
.
├── foo
│ └── foo.txt
└── foo.txt
Berganti nama menjadi pohon
.
├── bar
│ └── foo.txt
└── bar.txt
Batas penggantian diatur ke 1 secara default, namun Anda dapat mengonfigurasi batas ini untuk mengganti beberapa kecocokan yang tidak tumpang tindih. Semua kecocokan akan diganti jika opsi ini disetel ke 0.
rnr -f -l 0 o u ./ *
Pohon asli
.
├── foo.txt
├── foofoo.txt
├── foofoofoo.txt
└── foofoofoofoo.txt
Berganti nama menjadi pohon
.
├── fuu.txt
├── fuufuu.txt
├── fuufuufuu.txt
└── fuufuufuufuu.txt
Anda dapat menggabungkan rnr
dengan alat UNIX lainnya menggunakan pipa untuk menyampaikan argumen.
find . -type f +mtime 1 | xargs rnr -f file renamed
cat file_list.txt | xargs rnr -f file rename
konten file_list.txt
:
file-01.txt
one/file-02.txt
one/file-03.txt
Jika opsi rekursif ( -r
) dilewatkan, rnr
akan mencari semua file di jalur secara rekursif tanpa batas kedalaman.
rnr -f -r file renamed ./
Pohon asli
.
├── 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
Berganti nama menjadi pohon
.
├── 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
Demikian pula, Anda dapat mengatur kedalaman direktori maksimum yang dikombinasikan dengan operasi rekursif.
rnr -f -r -d 2 file renamed ./
Pohon asli
.
├── 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
Berganti nama menjadi pohon
.
├── 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
abaikan file tersembunyi secara default untuk mempercepat operasi dan menghindari masalah dengan beberapa direktori tertentu seperti .git/
atau .local/
. Anda dapat memasukkan file tersembunyi melalui opsi -x
. Selain itu, Anda juga dapat menggunakan opsi sertakan direktori -D
dengan -r
.
rnr -f -r -D -x foo bar ./
Pohon asli
.
├── .foo_hidden_file.txt
├── foo.txt
├── foo
│ ├── foo.txt
│ └── foo
│ └── foo.txt
└── .foo_hidden_dir
└── foo.txt
Berganti nama menjadi pohon
.
├── .bar_hidden_file.txt
├── bar.txt
├── bar
│ ├── bar.txt
│ └── bar
│ └── bar.txt
└── .bar_hidden_dir
└── bar.txt
Saat Anda melakukan operasi penggantian nama, rnr
secara default akan membuat file dump di direktori saat ini tempat Anda menjalankan perintah. File ini dapat digunakan untuk mengembalikan operasi dengan mudah menggunakan opsi from-file
dan -u
.
Ganti nama operasi
rnr -f foo bar ./ *
Membatalkan operasi sebelumnya
rnr from-file -f -u rnr-[timestamp].json
Jika Anda ingin mengulangi operasi, cukup berikan file dump tanpa argumen tambahan:
rnr from-file -f rnr-[timestamp].json
rnr
dapat membuat file cadangan sebelum mengganti nama operasi apa pun dengan meneruskan opsi -b
. Nama file cadangan dipastikan unik dan tidak akan ditimpa jika cadangan lain dibuat. Jika Anda bekerja dengan banyak file besar, pertimbangkan bahwa file tersebut akan diduplikasi.
rnr -f -b file renamed ./ *
Pohon asli
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Berganti nama menjadi pohon
.
├── file-01.txt.bk
├── file-02.txt.bk
├── file-03.txt.bk
├── renamed-01.txt
├── renamed-02.txt
└── renamed-03.txt
rnr
dapat mengonversi nama file UTF-8 menjadi representasi ASCII. Fitur ini menggunakan perpustakaan AnyAscii untuk melakukan transliterasi.
Anda dapat menjalankan:
rnr to-ascii ./ *
Atau:
rnr to-ascii -r .
Pohon asli
.
├── fïlé-01.txt
├── FïĹÊ-02.txt
└── file-03.txt
Berganti nama menjadi pohon
.
├── file-01.txt
├── FILE-02.txt
└── file-03.txt
Info lebih lanjut tentang regex yang digunakan dalam paket regex
.
rnr -f '..*$' '.txt' ./*
Pohon asli
.
├── file-01.ext1
├── file-02.ext2
└── file-03.ext3
Berganti nama menjadi pohon
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
rnr -f 'd' '1' ./*
Pohon asli
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Berganti nama menjadi pohon
.
├── file-11.txt
├── file-12.txt
└── file-13.txt
name(1)-number(2).extension(3)
].rnr -f ' (w+)-(d+).(w+) ' ' ${2}-${1}.${3} ' ./ *
Pohon asli
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Berganti nama menjadi pohon
.
├── 01-file.txt
├── 02-file.txt
└── 03-file.txt
CATATAN SHELL: Di shell seperti Bash dan zsh, pastikan untuk membungkus pola REPLACEMENT
dalam tanda kutip tunggal. Jika tidak, indeks grup tangkapan akan digantikan oleh variabel shell yang diperluas.
number
.ext
.rnr -f ' (?P<number>d{2}).(?P<ext>w{3}) ' ' ${ext}.${number} ' ./ *
Pohon asli
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Berganti nama menjadi pohon
.
├── file-txt.01
├── file-txt.02
└── file-txt.03