RnR ist ein Befehlszeilentool zum sicheren Umbenennen mehrerer Dateien und Verzeichnisse, das reguläre Ausdrücke unterstützt.
Sie können Binärdateien von der Seite mit der neuesten Version herunterladen und die komprimierte Datei auswählen, die Ihrer Plattform entspricht. Diese komprimierten Dateien enthalten die ausführbare Datei und andere zusätzliche Inhalte wie Abschlussdateien ( Bash , Zsh , Fish und PowerShell ).
Im AUR ist ein Paket ( rnr
) verfügbar, um die neueste Version von RnR unter Arch Linux zu installieren.
Sie können den Homebrew-Paketmanager verwenden, um dieses Tool auf macOS- oder Linux-Systemen zu installieren.
brew install rnr
RnR ist in Rust geschrieben. Sie können es mit Cargo aus dem Quellcode erstellen.
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
Kiste. Sie können die Regex-Syntax hier überprüfen. Es unterstützt nummerierte und benannte Erfassungsgruppen .from-file
rückgängig zu machen. WINDOWS-HINWEIS: In den Beispielen, die *
verwenden, müssen Sie den Platzhalter in PowerShell erweitern, zum Beispiel: rnr ab (Get-Item ./*)
. Dies wird in cmd.exe
nicht unterstützt.
Sie können eine Liste der umzubenennenden Dateien als Argumente übergeben:
rnr -f file renamed ./file-01.txt ./one/file-02.txt ./one/file-03.txt
Ursprünglicher Baum
.
├── file-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── file-02.txt
└── file-03.txt
Baum umbenannt
.
├── renamed-01.txt
├── file-02.txt
├── file-03.txt
└── one
├── file-01.txt
├── renamed-02.txt
└── renamed-03.txt
Verzeichnisse werden standardmäßig ignoriert, Sie können sie aber auch mit der Option -D
zur Umbenennung hinzufügen.
rnr -f -D foo bar ./ *
Ursprünglicher Baum
.
├── foo
│ └── foo.txt
└── foo.txt
Baum umbenannt
.
├── bar
│ └── foo.txt
└── bar.txt
Das Ersetzungslimit ist standardmäßig auf 1 eingestellt, Sie können dieses Limit jedoch so konfigurieren, dass mehrere nicht überlappende Übereinstimmungen ersetzt werden. Alle Übereinstimmungen werden ersetzt, wenn diese Option auf 0 gesetzt ist.
rnr -f -l 0 o u ./ *
Ursprünglicher Baum
.
├── foo.txt
├── foofoo.txt
├── foofoofoo.txt
└── foofoofoofoo.txt
Baum umbenannt
.
├── fuu.txt
├── fuufuu.txt
├── fuufuufuu.txt
└── fuufuufuufuu.txt
Sie können rnr
mit anderen UNIX-Tools kombinieren, indem Sie Pipes zur Übergabe von Argumenten verwenden.
find . -type f +mtime 1 | xargs rnr -f file renamed
cat file_list.txt | xargs rnr -f file rename
file_list.txt
-Inhalt:
file-01.txt
one/file-02.txt
one/file-03.txt
Wenn die rekursive Option ( -r
) übergeben wird, sucht rnr
rekursiv ohne Tiefenbeschränkung nach allen Dateien im Pfad.
rnr -f -r file renamed ./
Ursprünglicher Baum
.
├── 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
Baum umbenannt
.
├── 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
Ebenso können Sie in Kombination mit rekursiven Operationen eine maximale Verzeichnistiefe festlegen.
rnr -f -r -d 2 file renamed ./
Ursprünglicher Baum
.
├── 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
Baum umbenannt
.
├── 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
ignoriert standardmäßig versteckte Dateien, um die Vorgänge zu beschleunigen und Probleme mit bestimmten Verzeichnissen wie .git/
oder .local/
zu vermeiden. Sie können versteckte Dateien mit der Option -x
einschließen. Sie können auch die Option „Verzeichnisse einschließen -D
mit -r
verwenden.
rnr -f -r -D -x foo bar ./
Ursprünglicher Baum
.
├── .foo_hidden_file.txt
├── foo.txt
├── foo
│ ├── foo.txt
│ └── foo
│ └── foo.txt
└── .foo_hidden_dir
└── foo.txt
Baum umbenannt
.
├── .bar_hidden_file.txt
├── bar.txt
├── bar
│ ├── bar.txt
│ └── bar
│ └── bar.txt
└── .bar_hidden_dir
└── bar.txt
Wenn Sie einen Umbenennungsvorgang durchführen, erstellt rnr
standardmäßig eine Dump-Datei in dem aktuellen Verzeichnis, in dem Sie den Befehl ausgeführt haben. Diese Datei kann verwendet werden, um die Vorgänge mit der Option from-file
und -u
einfach rückgängig zu machen.
Vorgang umbenennen
rnr -f foo bar ./ *
Vorherigen Vorgang rückgängig machen
rnr from-file -f -u rnr-[timestamp].json
Wenn Sie den Vorgang wiederholen möchten, übergeben Sie einfach die Dump-Datei ohne zusätzliche Argumente:
rnr from-file -f rnr-[timestamp].json
rnr
kann Sicherungsdateien vor dem Umbenennen für jeden Vorgang erstellen, indem die Option -b
übergeben wird. Es wird sichergestellt, dass die Namen der Sicherungsdateien eindeutig sind und nicht überschrieben werden, wenn ein weiteres Backup erstellt wird. Wenn Sie mit vielen großen Dateien arbeiten, berücksichtigen Sie, dass Dateien dupliziert werden.
rnr -f -b file renamed ./ *
Ursprünglicher Baum
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Baum umbenannt
.
├── file-01.txt.bk
├── file-02.txt.bk
├── file-03.txt.bk
├── renamed-01.txt
├── renamed-02.txt
└── renamed-03.txt
rnr
kann UTF-8-Dateinamen in ihre ASCII-Darstellung konvertieren. Diese Funktion verwendet die AnyAscii-Bibliothek, um die Transliteration durchzuführen.
Sie können Folgendes ausführen:
rnr to-ascii ./ *
Oder:
rnr to-ascii -r .
Ursprünglicher Baum
.
├── fïlé-01.txt
├── FïĹÊ-02.txt
└── file-03.txt
Baum umbenannt
.
├── file-01.txt
├── FILE-02.txt
└── file-03.txt
Weitere Informationen zu Regex, die im regex
-Paket verwendet werden.
rnr -f '..*$' '.txt' ./*
Ursprünglicher Baum
.
├── file-01.ext1
├── file-02.ext2
└── file-03.ext3
Baum umbenannt
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
rnr -f 'd' '1' ./*
Ursprünglicher Baum
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Baum umbenannt
.
├── file-11.txt
├── file-12.txt
└── file-13.txt
name(1)-number(2).extension(3)
].rnr -f ' (w+)-(d+).(w+) ' ' ${2}-${1}.${3} ' ./ *
Ursprünglicher Baum
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Baum umbenannt
.
├── 01-file.txt
├── 02-file.txt
└── 03-file.txt
SHELL-HINWEIS: Stellen Sie in Shells wie Bash und zsh sicher, dass Sie das REPLACEMENT
Muster in einfache Anführungszeichen setzen. Andernfalls werden Capture-Gruppenindizes durch erweiterte Shell-Variablen ersetzt.
number
.ext
.rnr -f ' (?P<number>d{2}).(?P<ext>w{3}) ' ' ${ext}.${number} ' ./ *
Ursprünglicher Baum
.
├── file-01.txt
├── file-02.txt
└── file-03.txt
Baum umbenannt
.
├── file-txt.01
├── file-txt.02
└── file-txt.03