RnR 은 정규식을 지원하는 여러 파일과 디렉터리의 이름을 안전하게 바꾸는 명령줄 도구입니다.
최신 릴리스 페이지에서 바이너리를 다운로드하고 플랫폼에 해당하는 압축 파일을 선택할 수 있습니다. 이러한 압축 파일에는 실행 파일과 완료 파일( Bash , Zsh , fish 및 PowerShell )과 같은 기타 추가 콘텐츠가 포함되어 있습니다.
Arch Linux에 RnR 의 최신 버전을 설치하기 위한 패키지가 AUR( rnr
)에서 제공됩니다.
Homebrew 패키지 관리자를 사용하여 macOS 또는 Linux 시스템에 이 도구를 설치할 수 있습니다.
brew install rnr
RnR은 Rust로 작성되었습니다. 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
상자와 동일한 제한 사항이 있습니다. 여기서 정규식 구문을 확인할 수 있습니다. 번호가 매겨지고 명명된 캡처 그룹을 지원합니다.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
깊이 제한 없이 경로에서 모든 파일을 재귀적으로 찾습니다.
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
옵션을 전달하면 숨겨진 파일을 포함할 수 있습니다. 또한 -r
과 함께 포함 디렉터리 -D
옵션을 사용할 수도 있습니다.
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
패키지에 사용되는 정규식에 대한 추가 정보.
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
쉘 참고: 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