bash: записать список имен файлов в файл с дополнительными текстами - PullRequest
1 голос
/ 20 апреля 2020

Я хочу записать некоторый текст в файл для каждого имени файла в папке. Примерно так:

echo "file $(ls *.png) \n duration 0.12" >  test.txt

Однако этот код просто добавляет file в начале и \n duration 0.12 в конце файла и список файлов между ними, а я хочу что-то вроде этого:

  file 1.png
  duration 0.12
  file 2.png 
  duration 0.12

Файл должен быть в формате ffmpeg concat demuxer.

Я знаю, что могу использовать al oop. Однако я не знаю, есть ли более короткая команда или l oop столь же эффективен, как ls или другая команда linux?

Ответы [ 2 ]

3 голосов
/ 20 апреля 2020

Вы можете сделать это довольно просто, как это, используя bash "globbing" :

printf "file %s\nduration 0.12\n" *.png

Пример вывода

file a.png
duration 0.12
file alpha.png
duration 0.12
file b.png
duration 0.12
file bg.png
duration 0.12

Обратите внимание, что, если вы хотите, чтобы они были в указанном порядке c, вы можете делать такие вещи:

printf "file %s\nduration 0.12\n" d*.png t*.png p*.png

Ключевые слова : ffmpeg, concat demuxer, файлы и длительности

3 голосов
/ 20 апреля 2020

С GNU найти:

find . -maxdepth 1 -name "*.png" -type f -printf "file %f\nduration 0.12\n"

См .: man find

...