潜水很久了,第一次提问!
我找不到以下内容:我想创建一个文本文件,其中包含文件名,包括子目录中的文件名、它们的路径和元数据(尤其是视频分辨率)。所有这些都来自控制台。
我找不到类似的东西,只有一种名为 mediainfo 的东西很接近,但据我所知只适用于 1 个文件。
有人能给我指点一下吗?谢谢您的宝贵时间!谢谢
请不要管我的问题。
答案1
一般来说,使用和 来获取 1 个参数的命令 ( mediainfo foo
) 并将其应用于一组文件的方式是使用find
。xargs
请参阅man find;man xargs
。
我使用以 NUL 结尾的选项(-print0
和-0
),因为您没有说文件名中没有空格。
find . -type f -print0 | xargs -0 -n 1 mediainfo
答案2
mediainfo
是获取此信息的绝佳选择。我会使用脚本来确保我在单个文件上获得我想要的结果,然后在所需的范围内迭代它。这是我调用1linenfo.sh
并放在我的~/bin
目录中的一个示例:
与您计划执行的所有脚本一样,您必须将权限更改为可执行。在这个特定情况下,这将是chmod +x ~/bin/1linenfo.sh
#! /bin/bash
pfx=$(mediainfo --Inform="General;%CompleteName%" "$1")
sfx=$(mediainfo --Inform="Video;%Width%x%Height%" "$1")
Title="$pfx $sfx" #build desired line of output
echo "$Title" #output
以上内容包含您需要的信息,但您可以轻松添加更多信息。有关更详细的输出选项,请查看mediainfo --Info-Parameters
您可以轻松利用 find 在您所需的范围内进行迭代。
find . -type f -exec bash -c '1linenfo.sh "{}"' \;
如果您需要将输出重定向到文件,您可以执行以下操作:
find . -type f -exec bash -c '1linenfo.sh "{}"' \;>report.txt
如果这个答案有任何不清楚的地方,请给我留言,我会尽力澄清。