我使用ls -l
命令查看文件夹中的所有文件大小。任何人都可以帮我如何在.txt
文件中输出它。
答案 0 :(得分:6)
答案 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