2

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

4

6 回答 6

6

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

ls -l > yourfile.txt

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

于 2012-07-27T18:44:01.787 回答
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的所有输出感到满意,那么正如其他人所回答的那样。

于 2012-07-27T19:23:48.940 回答
3

我会stat(1)直接使用:

stat -c '%s %n' *

或者如果递归地这样做:

find /some/path -type f -printf '%s %f\n'
于 2012-07-27T19:26:12.243 回答
1

为此,请使用 ls -l> yourfile.txt

于 2012-07-27T18:44:14.480 回答
1

你可以使用du命令:

du * > file.txt

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

例子:

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

或者

$ du /path/to/directory/* > /path/to/file.txt
于 2012-07-27T20:57:17.350 回答
-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

于 2013-10-21T00:30:05.227 回答