【问题标题】:Is there a way for changing text file names in a folder using C++有没有办法使用 C++ 更改文件夹中的文本文件名
【发布时间】:2021-03-20 09:32:00
【问题描述】:

我正在处理我的项目中的一堆 txt 文件(数千个)。每个 txt 文件上都有“csv”信息。问题是每个 txt 文件都有一个随机名称,因此我无法创建将它们加载到我的项目中的代码。因此,我想以特定模式重命名它们,以便更轻松地在我的工作中加载文件。我将使用 C++ 来完成这项任务。

我将所有 txt 文件放在一个文件夹中,但我看不到使用 C++ 重命名它们的方法。我怎样才能做到这一点?有办法吗?有人可以帮我吗?

【问题讨论】:

  • 我不确定 C++ 是完成这项任务的最合适的工具吗?您必须使用它有什么特别的原因吗?为什么不是 bash 脚本?
  • 我正在尝试使用 C++,因为它是我比较熟悉的语言,但如果有其他选择,例如使用 Python,我愿意尝试。 bash 脚本可能是一个不错的选择,但我不知道该怎么做。你能建议怎么做吗?
  • 好的,我为您的问题发布了答案。我不认为 C++ 是最简单的方法。您可能应该编辑您的问题,以便社区可以为您的问题提供最简单的解决方案 :) 祝你好运!

标签: c++ directory rename txt


【解决方案1】:

免责声明

此答案的有效性基于作者明确指出他们未绑定到 C++ 语言的评论(可能值得编辑问题、C++ 标记和操作系统)。此解决方案可能适用于支持 bash 的 UNIX 系统,即大多数 Linux 发行版和 macOS Catalina 之前的所有 Apple macOS 版本(如果我错了,请纠正我)。

Bash 命令行

使用下面的 bash 命令应该重命名一个文件夹中的所有文件,并增加数字,即:

  • toto.csv -> 1.csv
  • titi.csv -> 2.csv 等

假设顺序不重要。

a=1; for i in *; do mv -n "$i" "$a.csv" ; let "a +=1"; done

要测试它,您可以通过打开终端并输入来准备一个测试文件夹:

mkdir test
cd test
touch toto.csv titi.csv tata.csv
ls

输出:

tata.csv  titi.csv  toto.csv

然后你可以运行以下命令:

a=1; for i in *; do mv -n "$i" "$a.csv" ; let "a +=1"; done
ls

输出:

1.csv  2.csv  3.csv

说明:

  • a=1 声明一个变量
  • for i in *; 开始遍历文件夹中的所有文件
  • do mv 将移动(重命名)列表中的一个文件(即变量$i)到一个名为a.csv 的新名称
  • 然后我们增加计数器a,然后关闭循环。
  • 选项-n 将确保没有文件被命令mv 覆盖

我认为重命名文件没有特定的标准。如果重命名中有特定的结构(模式),bash 命令可能可以适应它,但是问题应该提供有关这些要求的更多详细信息:)

【讨论】:

    【解决方案2】:

    您可以使用std::filesystem::directory_iteratorstd::filesystem::rename (c++17),如here 所述。

    【讨论】:

    • 我不知道这些功能,谢谢!我想我仍然需要通过所有 C++17 ^^ 我喜欢 directory_iterator 的想法:D
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 2010-11-05
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    相关资源
    最近更新 更多