Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux中为文件夹生成清单(文件列表及其大小和计数)_Linux_Shell - Fatal编程技术网

如何在linux中为文件夹生成清单(文件列表及其大小和计数)

如何在linux中为文件夹生成清单(文件列表及其大小和计数),linux,shell,Linux,Shell,如何生成包含除特定文件名以外的所有文件的清单,如Fillow文件夹 实际要求 4 issue1425.tgz 3096209598 issue1426.TGZ 3096209591 issue1427.ZIP 3096209592 issue1428.zip 3096209593 => 文件总数:4 文件名:issue1425.tgz 档案大小:123333 我是这样做的 ls i2*.* |wc -l >>manifest.t

如何生成包含除特定文件名以外的所有文件的清单,如Fillow文件夹

实际要求

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}'

如果您只需要文件的数量及其大小,请尝试以下方法:

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}'

我得到的计数部分是正确的,但我需要第二部分的帮助,以GBs、MBs、KBs为单位给出大小,但我想输入bytesOK,然后你可以替换
h
标志为
--block size=1
。类似于
ls-1s--block size=1$dir
谢谢这是在工作ls-1s--block size=1是*.dir awk'{print$2'\t$1}“您最好先
cd$dir
,然后
ls
-->
cd$dir;ls-1s--block size=1是*.| awk'{print$2'\t'$1}'
。否则你将不得不去做类似的事情