1

のようなフォルダに特定のファイル名を除くすべてのファイルを含むマニフェストを生成する方法。

実際の所要量

4
issue1425.tgz       3096209598  
issue1426.TGZ       3096209591
issue1427.ZIP       3096209592
issue1428.zip       3096209593

=> ファイルの総数: 4

ファイル名: issue1425.tgz

ファイルのサイズ: 123333

....

私はこのようにやっています

ls i2*.* |wc -l >>manifest.txt
vdir i2*.* >>manifest.txt

これから「manifest.txt」に出力されるのは

4
-rwxr-Sr-t 1 root root 3096209598 2013-03-28 05:46 issue1425.tgz
-rwxrw-r-- 1 root root 3096209591 2013-03-20 06:46 issue1426.TGZ
-rwxr-Sr-t 1 root root 3096209592 2013-03-28 07:46 issue1427.ZIP
-rwxrw-r-- 1 root root 3096209593 2013-03-20 08:46 issue1428.zip

私の正確な要件を取得するための解決策はありますか:

編集2:@jarnbjoあなたのコマンドは私に間違った出力を与えますが、ファイルの実際のサイズを見てください。

root@aim-deb:/mnt/arch1/batchfiles/siva/20130328094916142/received# vdir
total 108816
drwxrwxrwx 5 1330 sno      4096 2013-03-20 00:30 i23321367
-rw-rw-r-- 1 1330 sno  39934457 2013-03-20 03:20 i23321367.tgz
drwxrwxrwx 5 1330 sno      4096 2013-03-20 00:33 i23321376
-rw-rw-r-- 1 1330 sno  36030069 2013-03-20 03:20 i23321376.tgz
drwxrwxrwx 5 1330 sno      4096 2013-03-20 00:34 i23321436
-rw-rw-r-- 1 1330 sno  35310600 2013-03-20 03:20 i23321436.tgz
-rw-r--r-- 1 root root       69 2013-03-29 00:57 manifest_QAG.txt
-rw-rw-r-- 1 1330 sno        75 2013-03-20 03:20 manifest.txt
root@aim-deb:/mnt/arch1/batchfiles/siva/20130328094916142/received# ls -1s --    block-size=1 i*.* $dir| awk '{print $2"\t"$1}'
i23321367.tgz   39981056
i23321376.tgz   36073472
i23321436.tgz   35352576
root@aim-deb:/mnt/arch1/batchfiles/siva/20130328094916142/received#

回答:@jarnbjo ありがとうございます。ディスク上のファイルサイズがファイルの実際のサイズではない場合、ブロックサイズはサイズを示します。ここで、vdir i*.* $dir| を使用できるように、ファイルのサイズが必要です。awk '{print $8"\t"$5}'

4

1 に答える 1

3

ファイルの量とそのサイズだけが必要な場合は、次を試してください。

ls -1hs $dir
  • h人間が読める
  • sサイズの略
  • 1(one) ファイルの名前を各行に 1 つずつ表示します。

そして、それを名前、次にサイズにしたい場合は、次を使用します。

ls -1hs $dir | awk '{print $2" "$1}'

編集
コメントから、サイズをバイト単位にしたいので、次のようにすることができます:

ls -1s --block-size=1 $dir

さらに編集
dir を表示したくない場合は、cd $dir事前に行う必要があります。他にも方法はありますが、これが一番きれいなようです。

cd $dir; ls -1s --block-size=1 is*.* | awk '{print $2"\t"$1}'
于 2013-03-28T12:53:19.447 に答える