bash: 在文件中写入文件名列表和附加文本
bash: write list of file names in a file with additional texts
我想为文件夹中的每个文件名将一些文本写入文件。像这样:
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的格式。
我知道我也许可以使用循环。但是,我不知道是否有更短的命令或者循环是否与 ls
或另一个 linux 命令一样有效?
使用 GNU 查找:
find . -maxdepth 1 -name "*.png" -type f -printf "file %f\nduration 0.12\n"
参见:man find
你可以像这样使用 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
请注意,如果您希望它们按特定顺序排列,您可以这样做:
printf "file %s\nduration 0.12\n" d*.png t*.png p*.png
关键字:ffmpeg、concat demuxer、文件和持续时间
我想为文件夹中的每个文件名将一些文本写入文件。像这样:
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的格式。
我知道我也许可以使用循环。但是,我不知道是否有更短的命令或者循环是否与 ls
或另一个 linux 命令一样有效?
使用 GNU 查找:
find . -maxdepth 1 -name "*.png" -type f -printf "file %f\nduration 0.12\n"
参见:man find
你可以像这样使用 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
请注意,如果您希望它们按特定顺序排列,您可以这样做:
printf "file %s\nduration 0.12\n" d*.png t*.png p*.png
关键字:ffmpeg、concat demuxer、文件和持续时间