Как напечатать имена файлов в новый файл с определенным форматом, используя awk? - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь распечатать список всех файлов jpg в каталоге в новый файл .txt.

Выходной формат в этом файле .txt должен выглядеть следующим образом:

<img src="filename.jpg">

В настоящее время у меня есть эта команда:

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

Но это не работает. Какая команда подойдет для правильного форматирования?

Ответы [ 3 ]

2 голосов
/ 06 апреля 2019

Один в 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">
2 голосов
/ 06 апреля 2019

Вам не нужен awk или какой-либо другой внешний инструмент для этого, оболочка может сделать это сама:

printf '<img src="%s">\n' *.jpg > list_of_files.txt
1 голос
/ 06 апреля 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...