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 '{打印 $8"\t"$5}'

4

1 回答 1

3

如果您只想要文件的数量及其大小,请尝试以下操作:

ls -1hs $dir
  • h代表人类可读
  • s代表尺寸
  • 1(一)只显示文件名,每行一个。

如果您希望它是名字,然后是大小,请使用:

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

从评论中编辑
,您希望它的大小以字节为单位,因此您可以这样做:

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

进一步编辑
如果你不想显示目录,你必须cd $dir事先。还有其他方法,但这似乎是最干净的。

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