您能建议如何在 Ubuntu 22.04 下使用 `rename.ul` 吗?非常感谢?

您能建议如何在 Ubuntu 22.04 下使用 `rename.ul` 吗?非常感谢?

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.ulrename是从包中安装的版本util-linux。如果它仍然存在,您将安装它apt install util-linux。然而,由于这个提交的错误,它似乎已从上游 Debian 软件包版本 2.35.2-5 中删除util-linux:未安装 rename.ul 作为“重命名”命令的可能替代方案

据我所知,该功能在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 版本则强制使用键盘更加详细并明确地输入更多内容。

它们都是非常古老的命令。所以这里没有新的和旧的(当然,其中一个比另一个新。我不知道是哪一个。但我已经认识他们很长时间了。也许十年甚至更久) )。

曾几何时,这个util-linux是作为rename命令安装的。而且你必须挖掘 perl 的那个。以 RedHat 为例,情况仍然如此。但在基于 debian 的系统上已经不再出现这种情况了,rename默认情况下命令指向 perl 版本。

但是,直到 Ubuntu 20 为止,该util-linux命令都可以作为命令使用rename.ul。它已从 debian 中删除,然后从 Ubuntu 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十年来一直在做的事情。如果您愿意,您可以使用它(带有所有“无保证”和此类免责声明。如果您因为该脚本而丢失文件,那是您的责任,而不是我的责任:D)

相关内容