Ubuntu 22.04에서 `rename.ul`을 사용하는 방법을 제안해 주실 수 있나요? 매우 감사합니다?

Ubuntu 22.04에서 `rename.ul`을 사용하는 방법을 제안해 주실 수 있나요? 매우 감사합니다?

rename.ulUbuntu 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.ulrename패키지에서 설치된 버전입니다 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

다른 답변에서 언급했듯이(상당히 오래된 질문이지만 아직 정답이 제공되지 않음) renamePerl의 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)

관련 정보