在使用 Linux 时,您可能会遇到一些仅使用小写文件名的实用程序和应用程序。 我们通常不以这种格式保存文件,可能不得不寻找一种解决方法,将文件夹中的所有文件名递归转换为小写。 在本文中,我们将向您展示两种将给定路径中的所有文件和文件夹名称转换为小写的方法,只需通过命令行即可。
我们已经在 Ubuntu 18.04 LTS 系统上运行了本文中提到的命令和过程。
以下是使用 find 命令列出文件夹内容的方法:
$查找 [directory_name] -深度
我将用作本文示例的“我的下载”文件夹包含所有以大写字母开头的文件,并且在名称之间还包含一些文件。
$ find Downloads -depth
方法一:使用重命名命令
在这种方法中,我们将使用 Ubuntu 的 find、Xargs 和 rename 命令来递归地重命名给定目录中的所有文件/文件夹。
通过应用程序启动器搜索或 Ctrl+Alt+T 快捷方式打开 Ubuntu 命令行终端。
这是您将使用的命令的语法:
$查找 [directory_name] -深度 | xargs -n 1 重命名 -v ‘s/(.*)/([^/]*)/$1/L$2/’ {} ;
如果您的系统上没有安装 rename 命令,则在运行上述命令时可能会出错。 您可以通过以下 apt-get 命令将 rename 安装到您的 Ubuntu:
$ sudo apt-get install rename
我将使用以下命令将下载目录中的文件名转换为小写:
$ find Downloads -depth | xargs -n 1 rename -v 's/(.*)/([^/]*)/$1/L$2/' {} ;
当我再次列出目录的内容时,我能够看到所有文件名都转换为小写,如下所示:
方法2:使用脚本重命名文件
在这个方法中,我们将使用 bash 使用 find 和 mv 命令以递归方式重命名目录的文件和文件夹名称的脚本,包括目录名称本身。
打开终端应用程序并移动到 bin 文件夹,如下所示:
$ cd ~bin
现在,在您最喜欢的文本编辑器中打开一个新的脚本文件。 我们将使用 nano 编辑器打开一个名为 lowercase_filenames.sh 的空脚本文件
$ sudo nano lowercase_filenames.sh
在该空文件中,添加以下脚本。
#!/bin/bash #print usage if [ -z $1 ];then echo "Usage :$(basename $0) parent-directory" exit 1 fi #process all subdirectories and files in parent directory all="$(find $1 -depth)" for name in ${all}; do #set new name in lower case for files and directories new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')" #check if new name already exists if [ "${name}" != "${new_name}" ]; then [ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!" fi done exit 0
小费: 而不是将整个脚本输入你 bash 文件,您可以从此处复制它并使用 Ctrl+Shift+V 或使用右键单击菜单中的粘贴选项粘贴到终端中。
这是您的文件的样子:
现在,通过 Ctrl+X 快捷键退出文件并将文件保存在“Save 修改过的缓冲区?” 通过键入 Y 然后按 Enter 来提示。
为了使该文件成为可执行脚本,请在终端中运行以下命令:
$ sudo chmod +x lowercase_filenames.sh
现在您可以在任何文件夹上使用该脚本了。
当我在我的下载文件夹上运行脚本时,我看到所有文件和子文件夹名称都转换为小写,如下所示:
因此,这是您可以将文件名重命名为全小写字母的两种方法,这样您使用的应用程序就不会无法识别任何大写文件名。