当前位置: 首页 > 面试题库 >

如何在Linux上将所有文件夹和文件重命名为小写?

景哲
2023-03-14
问题内容

我必须递归重命名完整的文件夹树,以便任何地方都没有大写字母(这是C ++源代码,但这无关紧要)。

忽略CVS和Subversion版本控制文件/文件夹的加分点。首选方法是shell脚本,因为shell应该在任何Linux机器上都可用。

关于文件重命名的细节,有一些有效的论据。

  1. 我认为小写相同的文件应被覆盖;这是用户的问题。在忽略大小写的文件系统上签出时,它也会用后者覆盖第一个文件系统。

  2. 我会考虑AZ字符并将其转换为az,其他所有内容都只是在引起问题(至少在源代码中)。

  3. 在Linux系统上运行构建将需要该脚本,因此我认为应省略对CVS或Subversion版本控制文件的更改。毕竟,这只是从头开始。也许“出口”更合适。


问题答案:

使用以下"rename"命令的简明版本:

find my_root_dir -depth -exec rename 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;

这避免了问题的目录文件之前,重命名,并试图将文件移动到非现有目录(如"A/A""a/a")。

或者,更详细的版本而不使用"rename"

for SRC in `find my_root_dir -depth`
do
    DST=`dirname "${SRC}"`/`basename "${SRC}" | tr '[A-Z]' '[a-z]'`
    if [ "${SRC}" != "${DST}" ]
    then
        [ ! -e "${DST}" ] && mv -T "${SRC}" "${DST}" || echo "${SRC} was not renamed"
    fi
done

ps

后者使move命令(例如"svn mv")具有更大的灵活性。



 类似资料:
  • 问题内容: 我最初有一组图像,格式为image_001.jpg,image_002.jpg,… 我经历了他们,并删除了几个。现在,我想将剩余的文件重命名为image_001.jpg,image_002.jpg,… 是否有Linux命令可以很好地做到这一点?我对重命名很熟悉,但是看不到任何命令来排序这样的文件名。我在想,既然按顺序列出文件(有间隔),解决方案是将其输出传递到bash循环或其他东西中?

  • 问题内容: 我有大量的格式文件,以及。 如何重命名这些文件,使它们全部为大写,而忽略名称的数字部分? 问题答案:

  • 嗨,我有我的火花数据帧的输出,它创建文件夹结构并创建零件文件。现在我必须合并文件夹内的所有零件文件并将该文件重命名为文件夹路径名。 这就是我做分区的方式 它创建如下文件夹结构 我必须创建这样的最终文件 此处没有零件文件bith 001和002合并为两个一个。 我的数据大小非常大300 GB gzip和35 GB zip,因此变得非常慢。 我在这里看到了一个使用spark CSV编写单个CSV文件的

  • 问题内容: 我使用以下代码删除所有文件: 它将删除false 文件夹所在的位置。 我想删除文件夹及其所有子文件。 我该如何修改? 问题答案: 最简单的方法是使用Apache Commons IO库中的FileUtils.deleteDirectory。 请记住,这还将删除包含目录。 在gradle文件中添加此行以使用Apache

  • 这个问题是本文的后续内容:Python-根据子文件夹和文件名重命名子文件夹中的文件。 我正在尝试遍历中子文件夹中的文件,并以指定的方式重命名每个文件。以下是我目前掌握的代码: 当我运行该行时,,它正确地显示保存在中的名为的文件将被重命名为。 但是,os.rename命令返回以下错误: "必须是字符串,而不是列表。" 这似乎是由于我在os.rename命令中使用了“文件名”。据我所知,os.rena