我使用ls -l
命令查看文件夹中的所有文件大小。任何人都可以帮助我如何将其输出到.txt
文件中。
问问题
5848 次
6 回答
6
于 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 回答