“将 _Variable_ 文件夹名称添加到文件列表之前”的后续操作

“将 _Variable_ 文件夹名称添加到文件列表之前”的后续操作

对于我最初的问题,我收到了几个很好的答案,并选择使用 @Giles Quenot 提供的 bash 解决方案,该解决方案是

#!/bin/bash

str=$(<file)

for i in $str; do
    if [[ $i =~ ^[A-F][A-Z][0-1] ]]; then
        echo "${i:0:2}/$i.jpg"
    fi
done

它转换包含的文本文件

AF002
AI003
AA001
AD005
AD006
AI002

进入

AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

然而,我创建了一个名为 bash 脚本AddPath.sh,并且有两个完全与新手相关的问题:

  1. 我无法调整上述命令来操作脚本名称后“1”位置的文件;即我想写,AddPath.sh TrialList.txt > TargetFile.txt因为我可能不得不使用这个脚本数十次,每次都作用于不同的文件。请帮助我克服我的无知。

  2. 事实证明,我必须为其创建文件路径的大多数文件都位于 SanDisk 拇指驱动器上,通常称为NO NAME.没有汗水,我想。我只是将推荐脚本中的 echo 行添加修改为 echo "NO NAME/${i:0:2}/$i.jpg".第一次尝试似乎可行,但在后续运行中,它会插入一个额外的回车符(也许是换行符?),以便我在 iMac 上获得输出:

    NO NAME/AF/AF002
    .jpg
    NO NAME/AI/AI003
    .jpg
    NO NAME/AA/AA001
    .jpg
    NO NAME/AD/AD005
    .jpg
    NO NAME/AD/AD006
    .jpg
    NO NAME/AI/AI002
    .jpg
    

再说一次,很可能完全是新手的愚蠢。请帮忙。

答案1

呜呼!其实我自己解决了一个问题!

问题 (2) 是 $i 变量由于某种原因在原始列表的行末尾包含回车符。目前还不清楚为什么脚本现在这样做,而以前没有这样做,但就这样吧。我echo "NO NAME/${i:0:2}/$i.jpg"通过替换 解决了这个问题 echo "NO NAME/${i:0:2}/${i:0:5}.jpg"。这可以防止在行尾复制回车符。

相关内容