在 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 中将所有文件和目录重命名为小写。如果出现任何错误,请通过下面的反馈表联系我们。您也可以向我们提供任何其他方法。