rename.ul
Ubuntu 22.04에서 사용하는 방법을 제안해 주실 수 있나요? 매우 감사합니다!
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.10.102.1-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
/etc/update-motd.d/50-landscape-sysinfo: 17: cannot create /var/lib/landscape/landscape-sysinfo.cache: Permission denied
System information as of Thu Aug 11 14:43:22 CST 2022
System load: 0.0 Processes: 15
Usage of /: 15.8% of 250.98GB Users logged in: 0
Memory usage: 0% IPv4 address for eth0: 172.25.114.46
Swap usage: 0%
0 updates can be applied immediately.
This message is shown once a day. To disable it please create the
/home/user/.hushlogin file.
user@localhost:~$ rename.ul
rename.ul: command not found
user@localhost:~$ sudo apt-get install util-linux
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
util-linux is already the newest version (2.37.2-4ubuntu3).
util-linux set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
user@localhost:~$ rename
Command 'rename' not found, but can be installed with:
sudo apt install rename
user@localhost:~$ rename.ul
rename.ul: command not found
user@localhost:~$
답변1
rename.ul
rename
패키지에서 설치된 버전입니다 util-linux
. 아직 남아 있다면 설치해 보세요 apt install util-linux
. 그러나 제출된 버그로 인해 업스트림 데비안 패키지 버전 2.35.2-5에서 제거된 것으로 보입니다.util-linux: rename.ul은 "rename" 명령의 가능한 대안으로 설치되지 않습니다..
내가 아는 한, 이 기능은 rename
패키지( ) apt install rename
에 제공된 명령에서 사용할 수 있으며 , rename.ul
이 명령과 다른 명령으로 꼭 필요한 경우 rename
다른 소스에서 설치해야 합니다.
사용 예는 설명서( ) man rename
에 나와 있습니다 . 내가 보는 방법은 다음과 같습니다. 다음으로 끝나는 abc
모든 파일 이름을 대체합니다 .def
.txt
rename abc def *.txt
또한보십시오
답변2
다른 답변에서 언급했듯이(상당히 오래된 질문이지만 아직 정답이 제공되지 않음) rename
Perl의 utils 사용법은 이전 답변과 다릅니다.rename.ul
물론 궁극적인 유틸리티는 동일합니다. 여러 파일의 이름을 바꾸는 것입니다. 하지만 인터페이스는 다릅니다.
Perl에서 이름 바꾸기(기본적으로)는 정규식 및 여러 파일에서 작동합니다.
./rename s/abc/def/ *.txt
예를 들어.
util-linux는 이전 모드, 새 모드 및 여러 파일에서 작동하지만
./rename.ul abc def *.txt
Perl 버전이 더 강력합니다. 보다 세분화된 이름 변경을 위해 정규식을 사용할 수 있습니다. 정규식의 일반 사용자로서 나는 그것을 선호합니다. 하지만 util-linux 버전이 실제로 내 사용 사례의 100%를 다루기 때문에 그렇지 않습니다. 그리고 readline의 탭(대부분의 경우 파일 이름의 시작 부분의 이름을 바꾸고 싶습니다)과 잘 작동하는 반면 Perl 버전은 키보드를 사용하여 더 많은 장황함과 명시적인 입력을 강제합니다.
아주 오래된 명령입니다. 따라서 여기에는 새 것과 오래된 것이 없습니다(물론 하나는 다른 것보다 새롭습니다. 어느 것이지는 모르겠습니다. 그러나 나는 그들을 오랫동안 알고 있었습니다. 아마도 10년 이상일 것입니다).
옛날에는 이것이 명령 util-linux
으로 rename
설치 되었습니다. 그리고 이를 위해서는 Perl을 파헤쳐야 합니다. RedHat의 경우에는 여전히 그렇습니다. rename
명령이 기본적으로 Perl 버전을 가리키는 Debian 기반 시스템에서는 더 이상 그렇지 않습니다 .
하지만 이 명령은 Ubuntu 20까지 util-linux
명령으로 사용할 수 있습니다 rename.ul
. 데비안에서 제거된 다음 우분투 22에서 제거되었습니다. 이로 인해 한 명 이상의 사람들이 화를 냈고, 일종의 항의로 "오류 표"를 게시하는 사람들이 여전히 있습니다(그것이 실제로는 실수가 아니며 기껏해야 나쁜 결정이라는 것을 분명히 알고 있음).
그러나 Ubuntu 22에서는 perl 만 사용할 수 rename
있으며 util-linux는 다른 이름(예: )으로도 사용할 수 없습니다 rename.ul
.
저는 매우 간단한 Python 스크립트를 사용하여 작업을 수행합니다.
#!/usr/bin/python3
import sys
import os
if len(sys.argv)<4:
print("Usage rename.ul pattern newPattern file1 file2 file3 ...")
print("Renames all file1, file2, ... by replacing 'pattern' by 'newPattern' in their filenames")
sys.exit(1)
for fn in sys.argv[3:]:
os.rename(fn, fn.replace(sys.argv[1], sys.argv[2]))
rename.ul
물론 옵션 (제어 재정의, 연습 실행, 심볼릭 링크 처리 방법 등)이 없습니다 . 또한 특수 문자나 그와 유사한 것으로 고문 테스트를 한 적이 없습니다. 하지만 그것은 rename.ul
제가 10년 동안 해왔던 일과 정확히 일치합니다. 원하는 경우 사용할 수 있습니다(모든 "보장 없음" 및 그러한 면책조항 포함). 이 스크립트로 인해 파일이 손실된 경우 이는 내 책임이 아니라 귀하의 책임입니다. :D)