当前位置: 首页 > 面试题库 >

根据一种模式在Linux中重命名许多文件

壤驷德寿
2023-03-14
问题内容

我正在尝试使用mv命令执行三件事,但不确定是否可行?可能需要一个脚本。不知道怎么写。所有文件都在同一文件夹中。

1)以v9.zip结尾的文件应该只是.zip(已删除v9)

2)包含_的文件应为-

3)在大写字母旁边的小写字母(或小写字母旁边的大写字母)的文件之间应有一个空格。因此,MoveOverNow将变为“现在移过”,而ruNaway将变为ruN离开。[AZ]
[az]或[az] [AZ]变为[AZ] [az]和[az] [AZ]


问题答案:

我最喜欢的解决方案是我自己的 重命名
脚本
。映射到您的问题的最简单示例是:

% rename 's/_/-/g' *
% rename 's/(\p{Lower})(\p{Upper})/$1 $2/g' *

尽管我确实讨厌文件名中的空格,尤其是垂直空格:

 % rename 's/\s//g' *
 % rename 's/\v//g' *

等等。它基于The Larry Wall的脚本,但是扩展了选项,如下所示:

usage: /home/tchrist/scripts/rename [-ifqI0vnml] [-F file] perlexpr [files]
    -i          ask about clobbering existent files
    -f          force clobbers without inquiring
    -q          quietly skip clobbers without inquiring
    -I          ask about all changes
    -0          read null-terminated filenames
    -v          verbosely says what its doing 
    -V          verbosely says what its doing but with newlines between old and new filenames
    -n          don't really do it
    -m          to always rename
    -l          to always symlink
    -F path     read filelist to change from magic path(s)

如您所见,它不仅可以更改文件名,而且可以更改符号链接指向使用相同模式的位置。您不必使用一种s///模式,尽管通常使用一种模式。

该目录中的其他工具主要用于Unicode工作,其中有些工具非常有用。



 类似资料:
  • 问题内容: 我有类似的文件在系统中。我想编写一个bash shell脚本,该脚本应该通过从文件中删除“ _dbg”来重命名这些文件。 Google建议我使用命令。所以我在 我的实际文件包含以下文件。 执行命令后, 它不是递归执行的操作,如何使此命令重命名所有子目录中的文件。Like 和我将有很多子目录,这些子目录的名称不可预测。而且我还将拥有一些其他文件。 问题答案: 您可以用来递归查找所有匹配文

  • 问题内容: 我使用此命令查找具有给定模式的文件,然后将其重命名为其他文件 运行此命令时,我看到一些类似的输出 但是最后,当我运行时,我看到了旧文件名。 问题答案: 您正在回显’mv’命令,而不是实际执行它。改成:

  • 问题内容: 我最初有一组图像,格式为image_001.jpg,image_002.jpg,… 我经历了他们,并删除了几个。现在,我想将剩余的文件重命名为image_001.jpg,image_002.jpg,… 是否有Linux命令可以很好地做到这一点?我对重命名很熟悉,但是看不到任何命令来排序这样的文件名。我在想,既然按顺序列出文件(有间隔),解决方案是将其输出传递到bash循环或其他东西中?

  • 问题内容: 我想重命名与名称相匹配的basedir下的所有目录。例如: 在中,我有: 我想重命名所有匹配的目录,但是我想保留前缀部分。 使用,我可以轻松地列出所有目录,如下所示: 但是,如何使用(或与其他应用程序结合)以保留前缀? 提前谢谢了! 问题答案: 在执行命令之前将目录更改为父目录,因此此处对于每个父目录都是本地的。

  • 问题内容: 我有大量的格式文件,以及。 如何重命名这些文件,使它们全部为大写,而忽略名称的数字部分? 问题答案:

  • 这个问题是本文的后续内容:Python-根据子文件夹和文件名重命名子文件夹中的文件。 我正在尝试遍历中子文件夹中的文件,并以指定的方式重命名每个文件。以下是我目前掌握的代码: 当我运行该行时,,它正确地显示保存在中的名为的文件将被重命名为。 但是,os.rename命令返回以下错误: "必须是字符串,而不是列表。" 这似乎是由于我在os.rename命令中使用了“文件名”。据我所知,os.rena