Bash:无法使用 mediainfo 浏览目录中的所有文件

标签 bash mediainfo

我在 debian 计算机上有一个音乐目录,其中有时会出现太大的文件。为了帮助我最终删除这些文件,我安装了 mediainfo 并制作了一个脚本,该脚本应该使用该命令遍历音乐目录中的所有文件。

我正在尝试利用持续时间参数来定义需要删除或不删除的内容。示例输入是:

mediainfo --Inform="General;%Duration%" /home/administrator/music/Example\ Full\ OST.mp4
7838987

输出返回持续时间(以毫秒为单位)。请注意,如果文件中有空格,mediainfo 会在它们前面标记一个反斜杠。我在我的脚本中考虑到了这一点:

#!/bin/bash
for i in /home/administrator/music/*
do
# Changing i to readable form for mediainfo
i=$(echo $i | sed -r 's/[ ^]+/\\&/g')
echo $i
# Go Through files, storing the output to mediadur variable
mediadur=$(mediainfo --Inform="General;%Duration%" $i);
echo $mediadur;
done

echo 输出是:

/home/administrator/music/Example\ Full\ OST.mp4
 

mediadur echo 输出不显示任何内容。但是当我将第一个回显输出复制到第一个示例时,它显示相同的输出。

但是,如果目录中有任何文件名中没有空格的媒体,则脚本可以正常工作。脚本的输出:

/home/administrator/music/546721638279.mp3
83017

这个问题让我很困惑。如有任何帮助,我们将不胜感激。

最佳答案

您应该更新此行:

mediadur=$(mediainfo --Inform="General;%Duration%" "$i");

双引号会阻止 globbing and word splitting

关于Bash:无法使用 mediainfo 浏览目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36998854/

相关文章:

linux - Unix 测试文件是否存在

linux - 如何在不丢失尾随零的情况下使用 jq 获取纬度和经度?

linux - 如何使用 grep 或 awk 查找字符串及其值

linux - 读取不同的字段并传递给 awk 以提取这些字段

batch-file - 文件夹内的批处理文件创建 MediaInfo.nfo 文件

syntax - MediaInfo CLI(命令行界面)语法教我一劳永逸

c# - 将 MediaInfo DLL 与 C# DLLImport 结合使用

node.js - 使用aws lambda node js获取存储在s3存储桶中的视频的视频元数据

bash - 尝试增加关联数组元素时出现错误的数组下标错误

C# 从流中读取视频/音频/图像文件元数据