0

私は次のことを達成しようとしています:

複数のビデオ ファイルを含むディレクトリがあり、すべてのファイルを一覧表示し、同じ行に mediainfo を使用してファイルの期間とサイズを追加します (他に利用できるものはありません)。

Mediainfo の出力は次のようになります。

General
Format      : 
File Size   : 335 MiB
Duration    : 28mn 24s

ファイル内の次のデータを取得したい:
filename : 335 MiB : 28mn 24s
したがって、ファイルの重複があるかどうかを確認できます...

したがって、次のスクリプトがあります。

#!/bin/bash
         for i in $( ls /mnt/storage/kids/* ); do
                     echo -n item: $i ":"
                     mediainfo $i |grep -A 1 "File size"
                     done

echo n を使用すると、 item と同じ行に次の行が表示されます。
ファイル名と期間ヘッダーも削除したいと思います。

何か案が?

4

2 に答える 2

2

二重線を取り除くには、コードを次のように変更します。

echo -n item: $i ":" $(mediainfo $i |grep -A 1 "File size")

ヘッダーを取り除くには、awk を使用できます。

$ echo -e 'Filename : BOO\nSize : BAA' | awk -F: '{print $2}'
 BOO
 BAA
于 2012-06-26T11:34:43.600 に答える
0
  • を使用しないでくださいfor i in $(ls)。これはバグです。ファイルをループしたい場合は、for i in /mnt/storage/kids/*直接使用してください。
  • 移植可能echo -nな を優先して避けてください。printf

これを試して:

for i in /mnt/storage/kids/* ; do
    printf 'item: %s: ' "$i"
    mediainfo "$i" | sed -e '/File Size/,/Duration/{s/.*: //p;};d' | sed -e '$!N;s/\n/: /'
done
于 2012-06-26T11:41:57.607 に答える