在bash中重命名文件名

Posted

技术标签:

【中文标题】在bash中重命名文件名【英文标题】:Rename a filename in bash 【发布时间】:2020-02-18 00:44:24 【问题描述】:

在 bash 中重命名文件类型。所以当脚本运行时,它会接收一个 csv 文件并输出一个 excel 文件。我想要输出与输入文件同名但没有 csv 扩展名的 excel 文件。

我有一个需要帮助的 bash 代码。

bash Log2Time.sh 20190925_psort.csv
filename="$FILE%.*"
mv Log2Timeline_Filtered.xlsx $filename_EventIDs.xlsx

脚本的输入是 20190925_psort.csv 我希望将最终输出文件,即 Log2Timeline_Filtered.xlsx 重命名为 20190925_psort_EventIDs.xlsx

【问题讨论】:

csv 是一种简单的文件类型,我认为公平地说 xlsx 不是。数据的转换不能简单地通过扩展来完成。 Convert xlsx to csv in Linux with command line 可能会给你一些想法。 【参考方案1】:

这个怎么样:

csv_file=20190925_psort.csv
touch Log2Timeline_Filtered.xlsx
mv Log2Timeline_Filtered.xlsx "$csv_file%.csv_EventIDs.xlsx"

我只是通过创建一个名为 Log2Timeline_Filtered.xlsx 的新文件来模拟转换。答案使用参数扩展删除了.csv 后缀。在 bash 手册页中查找 parameter expansion 以了解更多信息。

【讨论】:

以上是关于在bash中重命名文件名的主要内容,如果未能解决你的问题,请参考以下文章

在 Git 中重命名文件后没有预期的日志 [重复]

如何在 Emacs 中重命名打开的文件?

在 Xcode 中重命名或重构文件

如何在上传过程中重命名图像文件

如何在 .NET 中重命名文件?

如何在 C++ 中重命名文件