在 Linux 中将所有文件和目录名称重命名为小写
在上一篇文章中,我们描述了如何计算给定目录内的文件和子目录的数量。本指南将向您展示如何在 Linux 中将所有文件和目录名称重命名为小写。
另请阅读:如何找出 Linux 中的顶级目录和文件(磁盘空间)
有多种方法可以实现这一目标,但我们将解释两种最有效和最可靠的方法。出于本指南的目的,我们使用了名为 Files
的目录,其结构如下:
find Files -depth
1. 一起使用 find、xargs 和 rename 命令
rename 是一个简单的命令行实用程序,用于在 Linux 中一次重命名多个文件。您可以将它与 find 实用程序一起使用,将特定目录中的所有文件或子目录重命名为小写,如下所示:
find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
上述命令中使用的选项的说明。
-depth
– 在目录本身之前列出每个目录的内容。-n 1
– 指示 xargs 在每个命令行中最多使用一个来自 find 输出的参数。
将 Files
目录中的文件和子目录重命名为小写后的示例输出。
另一种替代方法是在脚本中使用 find 和 mv 命令,如下所述。
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
您可能还想阅读以下相关文章。
- Linux 中“一切皆文件”和文件类型的解释
- fswatch – 监视 Linux 中的文件和目录更改或修改
- Fasd – 提供快速访问文件和目录的命令行工具
- FSlint – 如何在 Linux 中查找并删除重复文件
在本指南中,我们向您介绍了如何在 Linux 中将所有文件和目录重命名为小写。如果出现任何错误,请通过下面的反馈表联系我们。您也可以向我们提供任何其他方法来执行相同的操作。