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

问题描述 投票:1回答:3

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

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

<img src="filename.jpg">

目前,我有这个命令:

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

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

macos awk
3个回答
2
投票

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

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

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
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.