在前面的文章中,我们描述了如何计算给定目录中的文件和子目录数量 。 本指南将向您展示如何在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
目录中的小写后的样本输出。
将文件和目录名称重命名为小写
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中将所有文件和目录重命名为小写。 如果有任何错误,请通过以下反馈表单打开我们。 你也可以为我们提供任何其他做同样的方法。