处理用于格式化web文件名的文件列表(简单)

时间:2011-05-02 20:40:41

标签: ruby bash shell scripting

我意识到这很简单,但我不会写很多脚本,所以冒着愚蠢的骄傲,我希望通过提出这样一个基本问题来学习一两件事。

鉴于UNIX(Mac),您如何处理文件名的转换列表(.txt):

P4243419.JPG
P4243420.JPG
P4243423.JPG
...continues...

进入.html之类的东西:

<img src="http://imgs.domain.com/event/P4243419.JPG" title="Image File P4243419.JPG" />
<img src="http://imgs.domain.com/event/P4243420.JPG" title="Image File P4243420.JPG" />
<img src="http://imgs.domain.com/event/P4243423.JPG" title="Image File P4243423.JPG" />
...continues...

我知道Ruby ......但我会为这么简单的任务重视其他语言示例。我不确定如何将txt文件的每一行(或目录中的文件名)参数化为输入进行处理。输出很简单。

5 个答案:

答案 0 :(得分:1)

puts Dir['*.JPG'].map{ |f| "<img src='#{f}' title='Image File #{f}' />" }

修改:抱歉,我误读了。那么你有一个包含一堆文件名的文件?

IO.read('myfile.txt').scan(/\S+/).map{ |f| "...#{f}..." }

答案 1 :(得分:1)

perl -lnwe 'print "<img src=\"http://host/$_\">"' filelist.txt

答案 2 :(得分:1)

在Bash中:

使用目录列表:

for a in `ls *.JPG`; do echo "<img src=\"http://imgs.domain.com/event/$a\" title=\"Image File $a\" />"; done

从文件(名为 list 的文件):

cat list | while read a;  do echo "<img src=\"http://imgs.domain.com/event/$a\" title=\"Image File $a\" />"; done

答案 3 :(得分:1)

这不是最有效的解决方案,但易于理解: 创建一个文件img2link.sh

for file
do
    cat "$file" | grep -i jpg | while read image
    do
        echo "<img src=\"http://imgs.domain.com/event/$image\" title=\"Image File $image\" />"
    done
done

您可以使用新命令:

sh img2link.sh filename_with_images.txt another_filename_with_images.txt

grep确保您不会处理给定文件中的空行。

答案 4 :(得分:1)

对于bash脚本,我看到cat的几个答案 - 不需要

format_string="<img src='http://imgs.domain.com/event/%s' title='Image File %s' />\n"
while read f; do
    printf "$format_string" "$f" "$f"
done < filename.txt