ls < text.txt (包含子目录中的文件和文件解析)

ls < text.txt (包含子目录中的文件和文件解析)

潜水很久了,第一次提问!

我找不到以下内容:我想创建一个文本文件,其中包含文件名,包括子目录中的文件名、它们的路径和元数据(尤其是视频分辨率)。所有这些都来自控制台。

我找不到类似的东西,只有一种名为 mediainfo 的东西很接近,但据我所知只适用于 1 个文件。

有人能给我指点一下吗?谢谢您的宝贵时间!谢谢

请不要管我的问题。

答案1

一般来说,使用和 来获取 1 个参数的命令 ( mediainfo foo) 并将其应用于一组文件的方式是使用findxargs请参阅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

如果这个答案有任何不清楚的地方,请给我留言,我会尽力澄清。

相关内容