gpt4 book ai didi

bash - 使用 bash mangles 文件从 CSV 映射重命名文件

转载 作者:行者123 更新时间:2023-12-04 16:01:52 24 4
gpt4 key购买 nike

我正在尝试重命名自动生成的 PDF 文件,以便每个文件都包含它将转到的用户的名称,使用当前名称到新名称的 CSV 映射,使用我认为是直截了当的方法和 bash shell 中的简单脚本。

目录中的原始文件以Cover_Letter_1.pdfCover_Letter_2.pdf等格式命名,在CSV中,它们映射为以下格式:

Cover_Letter_1.pdf,Cover_Letter_User1.pdf
Cover_Letter_2.pdf,Cover_Letter_User2.pdf

我 CD 进入目录(文件和 CSV 都在该目录中),并尝试了这个脚本:

sed 's/"//g' rename_list.csv | while IFS=, read orig new; do echo mv "$orig" "$new"; done

返回预览,准确显示我的预期:

mv Cover_Letter_1.pdf Cover_Letter_User1.pdf
mv Cover_Letter_2.pdf Cover_Letter_User2.pdf

(sed 's/"//g' files.csv 用于如果 CSV 文件中的文件名中有引号,那么第一组文件恰好没有)

所以,我会删除 echo 以真正运行它,但结果是它破坏了文件,将它们转换为通用的 .file 格式,名称乱七八糟像 P4L8I7~B.file

我运行了一个“预览”命令(例如 mv Cover_Letter_2.pdf Cover_Letter_User2.pdf)只是为了确保脚本的那一部分是正确的(它是)。

编辑:我只是想尝试运行 sed 's/"//g' rename_list.csv | while echo IFS=, read orig new; do echo mv "$orig""$new"; done 导致它在没有明显结束的 while 循环中无限期运行。我认为当文件中没有更多逗号时它会终止,但是,如果我理解正确的话,它只是试图永远继续阅读行。

最佳答案

问题出在 CSV 文件本身。 CSV 是在 Windows 中创建的,带有 CR LF EOL 标记。一旦我将它转换为 LF,它就可以正常工作。

关于bash - 使用 bash mangles 文件从 CSV 映射重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50263422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com