如何将文件大小以字节为单位打印到.txt文件

时间:2012-07-27 18:42:00

标签: linux unix

我使用ls -l命令查看文件夹中的所有文件大小。任何人都可以帮我如何在.txt文件中输出它。

6 个答案:

答案 0 :(得分:6)

打开终端并使用以下命令:

ls -l > yourfile.txt

http://www.tuxfiles.org/linuxhelp/iodirection.html

答案 1 :(得分:5)

如果您想将某个文件foo的大小放在文本文件out.txt中,您可能会

 ls -l foo | awk '{print  $5}' > out.txt

还有许多其他变体(例如使用cut代替awk,或使用stat代替ls等。

在shell脚本或终端上,您可以将该大小分配给某个变量VAR,例如。

VAR=$(ls -l foo | awk '{print  $5}')

如果您对ls的所有输出都表示满意,那么普通重定向ls -l foo > out.txt就足够了,正如其他人所回答的那样。

答案 2 :(得分:3)

我会直接使用stat(1)

stat -c '%s %n' *

或者如果以递归方式进行:

find /some/path -type f -printf '%s %f\n'

答案 3 :(得分:1)

要做到这一点     ls -l> yourfile.txt

答案 4 :(得分:1)

您可以使用 du 命令:

du * > file.txt

du 返回文件的空间使用情况,因此如果您需要目录中的所有文件,则必须使用*

示例:

$ cd /path/to/directory
$ du * > file.txt

$ du /path/to/directory/* > /path/to/file.txt

答案 5 :(得分:-1)

编辑:刚才意识到这是非常偏离主题,因为问题是关于重定向。

我不知道为什么du喜欢显示块而不是字节。

我个人认为ls -l $1 | awk '{ print $5 }'处理过多,如果你期望优雅的错误处理,则不合理。

对我来说,最简单的选择就是编译效率更高的东西:

$ nano flsz.c

#include <stdio.h>

int main(int argc, char **argv) {
  if (argc > 1) {
    FILE *f = fopen(argv[1], "r");
    if (f && (fseek(f, 0, SEEK_END) == 0)) {
      int size = ftell(f);
      fclose(f);
      fprintf(stdout, "%d\n", size);
    } else {
      fprintf(stdout, "0\n");
    }
  } else {
    fprintf(stdout, "-1\n");
  }
  return 0;
}

$ gcc -o /usr/bin/flsz flsz.c

$ flsz flsz.c

340

$ flsz /usr/bin/flsz > output.txt

$ cat output.txt

8972