在Linux中将所有文件和目录名重新命名为小写

在前面的文章中,我们描述了如何计算给定目录中的文件和子目录数量 本指南将向您展示如何在Linux中将所有文件和目录名称重命名为小写。

另请参阅如何在Linux中找出顶级目录和文件(磁盘空间)

有几种方法可以实现这一点,但是我们将解释两种最有效和可靠的方法。 为了本指南的目的,我们使用了一个名为Files的目录,它具有以下结构:

# find Files -depth
列表目录结构

列表目录结构

1.使用find,xargs并重命名一起命令

重命名是一种简单的命令行实用程序,用于在Linux中一次重命名多个文件。 您可以与find实用程序一起使用,将特定目录中的所有文件或子目录重命名为小写,如下所示:

$ find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

上述命令中使用的选项说明。

  • -depth - 在目录本身之前列出每个目录的内容。
  • -n 1 - 指示xargs每个命令行最多只能使用一个参数从find输出。

将文件和子目录重命名为Files目录中的小写后的样本输出。

将文件和目录名称重命名为小写

将文件和目录名称重命名为小写

在脚本中使用findmv命令的另一种替代方式如下所述。

2.在Shell脚本中使用find和mv命令

首先创建你的脚本(你可以命名任何你喜欢的):

$ cd ~/bin
$ vi rename-files.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
echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth
exit 0

保存并关闭文件,然后使脚本可执行并运行:

$ chmod +x rename-files.sh
$ rename-files.sh Files     #Specify Directory Name
使用脚本的小写文件名

使用脚本的小写文件名

您也可以阅读以下相关文章。

  1. Linux中的“一切都是文件”和文件类型的说明
  2. fswatch - 监视Linux中的文件和目录更改或修改
  3. Fasd - 提供快速访问文件和目录的命令行工具
  4. FSlint - 如何在Linux中查找和删除重复的文件

在本指南中,我们告诉您如何在Linux中将所有文件和目录重命名为小写。 如果有任何错误,请通过以下反馈表单打开我们。 你也可以为我们提供任何其他做同样的方法。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏