fld=$(mediainfo Fixing\ One\ of\ Linux\'s\ Biggest\ Flaws.mp4 | awk -F " : " 'NR==10 {print $2}');
mkdir "$fld"
我正在尝试从 mediainfo 的输出中获取 Performer。第 10 行包含:
Performer : The Linux Cast
在这个文件中,我只想要“The Linux Cast”本身。我无法让它在 bash 脚本中工作。我设置了内联文件分隔符,但大括号扩展让我失望。使用 youtube-dl 下载并使用 mediainfo 读取的文件。
不明白为什么代码在 shell 中不起作用。我可能应该使用 sed 或其他核心实用程序。
只是尝试由内容创建者组织文件。
答案1
不要依赖行号,而是匹配Performer
:
fld=$(
mediainfo "Fixing One of Linux's Biggest Flaws.mp4" |
sed -n 's/^Performer[[:space:]]*:[[:space:]]*//p'
)
或者使用 GNU grep
:
fld=$(
mediainfo "Fixing One of Linux's Biggest Flaws.mp4" |
grep -Po '^Performer\s*:\s*\K.*'
)
或者使用exiftool
:
fld=$(
exiftool -q -p '$Artist' "Fixing One of Linux's Biggest Flaws.mp4"
)