如何使用awk将文件名打印到具有特定格式的新文件?

时间:2019-04-05 20:42:53

标签: macos awk

我正在尝试将目录中所有jpg文件的列表打印到新的.txt文件中。

.txt文件中的输出格式应如下所示:

<img src="filename.jpg">

当前,我有以下命令:

ls -al *.jpg | awk ‘{print”<img src=”$9">"}' > list_of_files.txt

但是它不起作用。获得正确格式的正确命令是什么?

3 个答案:

答案 0 :(得分:2)

awk中的一个:

$ awk '
BEGIN {
    for(i=1;i<ARGC;i++)                       # loop all argument files
        printf "<img src=\"%s\">\n", ARGV[i]  # output as requested
    exit                                      # never touch any files
}' *.jpg

输出样本:

<img src="foo.jpg">
<img src="bar.jpg">

答案 1 :(得分:2)

您不需要awk或任何其他外部工具,shell可以自行完成:

printf '<img src="%s">\n' *.jpg > list_of_files.txt

答案 2 :(得分:1)

ls -A1 *.jpg | awk '{print "<img src=\""$0"\">"}' > list_of_files.txt

安全版本(以防文件中包含rm -rf .. .jpg之类的文件:

shopt -s nullglob
for f in *; do
  if [[ "$f" == *.jpg ]]; then
    echo "<img src=\""$f"\">" >> list_of_files.txt
  fi
done