在命令行中重命名多个目录

Rtsne42

我有一些文件夹叫做:

Session 1
Session 2
Session 3
Session 4
Session 5
Session 6
Session 7
Session 8

我想将它们全部重命名为:

Folder 1
Folder 2
Folder 3
Folder 4
Folder 5
Folder 6
Folder 7
Folder 8

我将如何以最有效的方式在终端上执行此操作?

我知道mmv mvrename,但不知道我应该用什么以及如何去做。

塞尔吉·科洛季亚兹尼(Sergiy Kolodyazhnyy)

姓氏

最简单的方法是使用renameor prename,这是一个Perl脚本(如果您是akshmksh用户,则该shell具有rename内置功能,该功能是不同的,因此为了保持一致,我将prename在引用该Perl时使用脚本;或者,您可以调用/usr/bin/rename-可执行文件的完整路径)。

$ ls
Session 1/  Session 2/  Session 3/  Session 4/  Session 5/  Session 6/  Session 7/  Session 8/
$ prename 's/Session/Folder/' Session*/                                                                                  
$ ls
Folder 1/  Folder 2/  Folder 3/  Folder 4/  Folder 5/  Folder 6/  Folder 7/  Folder 8/

如果您需要递归搜索或确保找到正确的项目类型(也许您的文件名中还包含带有单词“ Session”的文件),则可以将其与find实用程序结合使用

$ ls
Folder 1/  Folder 2/  Folder 3/  Folder 4/  Folder 5/  Folder 6/  Folder 7/  Folder 8/

$ find -maxdepth 1 -type d -name "Session *" -exec prename 's/Session/Folder/' {} \;                                      

$ ls
Folder 1/  Folder 2/  Folder 3/  Folder 4/  Folder 5/  Folder 6/  Folder 7/  Folder 8/

稍长,也许有点多余,但是可以。

MV

一个小问题mv是,我们每次都需要更改目的地的名称,因此,它本身无法完成我们想要的操作。为此,我们必须将其与其他工具(例如findbash的工具)结合使用。

$ ls
Session 1/  Session 2/  Session 3/  Session 4/  Session 5/  Session 6/  Session 7/  Session 8/


$ for dir in Session*/ ; do mv "${dir}" "Folder ${dir##*\ }" ;done                                                       

$ ls
Folder 1/  Folder 2/  Folder 3/  Folder 4/  Folder 5/  Folder 6/  Folder 7/  Folder 8/

您在此处看到的是,我们正在遍历其中包含单词Session且为目录的所有项目我们使用参数扩展`$ {dir ## * \}“提取目录名称(相应编号)中空格之后的所有内容,并形成新字符串” Folder /“。

在这两个prename命令中,mv我们使用的是通配符,这意味着这些方法将重命名其中包含单词“ Session”的每个目录,甚至是“ Session blah”。当然,这不是理想的选择,但是对于您知道文件夹命名是一致的特定情况,它将起作用。或者,我们可以使用扩展命令for dir in Session\ [1-9] ; do . . .done

换句话说,这种方法可以工作,但是非常简单,也不是最好的方法。

Python

当然,也可以使用其他工具。例如,Python:

$ ls
Session 1/  Session 3/  Session 5/  Session 7/
Session 2/  Session 4/  Session 6/  Session 8/

$ python -c 'import os,shutil;map(lambda x:shutil.move(x,x.replace("Session","Folder")),os.listdir("."))'                

$ ls
Folder 1/  Folder 2/  Folder 3/  Folder 4/  Folder 5/  Folder 6/  Folder 7/  Folder 8/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以在Windows中使用命令行重命名多个目录?

来自分类Dev

如何通过命令行重命名目录?

来自分类Dev

通过命令行依次重命名多个文件

来自分类Dev

如何通过命令行批量重命名多个zip归档文件中的特定文件?

来自分类Dev

命令行实用程序“重命名”中的多个表达式

来自分类Dev

如何使用命令行轻松重命名多个文件?

来自分类Dev

如何使用Mac命令行编写重命名多个文件的脚本

来自分类Dev

如何使用命令行轻松重命名多个文件?

来自分类Dev

使用命令行重命名多个文件夹

来自分类Dev

命令行:用于文件重命名的常规命令

来自分类Dev

命令行重命名韩文文件名

来自分类Dev

从命令行重命名Yakuake会话

来自分类Dev

重命名Mac命令行文件

来自分类Dev

命令行重命名韩文文件名

来自分类Dev

如何从命令行批量重命名文件?

来自分类Dev

如何使用命令行重命名文件

来自分类Dev

如何在Linux下通过命令行在相应命名的目录中组织文件

来自分类Dev

重命名不同目录中的多个文件

来自分类Dev

重命名多个目录

来自分类Dev

Python中的多个命令行参数

来自分类Dev

unix 中的多个命令行

来自分类Dev

Bash命令可以在多个目录中复制并重命名相同的文件名?

来自分类Dev

从命令行计算多个子目录中的文件数

来自分类Dev

从命令行计算多个子目录中的文件数

来自分类Dev

在命令行中使用vlc打开多个目录

来自分类Dev

如何使用单个命令或命令行重命名从文件列表中提取的文件

来自分类Dev

使用重命名命令重命名多个目录,名称涉及括号

来自分类Dev

使用Bash脚本重命名多个目录中的多个文件

来自分类Dev

如何重命名多个目录?

Related 相关文章

热门标签

归档