我使用ls -l命令查看文件夹中的所有文件大小。 任何人都可以帮助我如何输出.txt文件。
EGit – 取,合并,拉麻烦
一个正在旋转并试图获得螺旋锁的线程不能被抢占?
为什么这个awk脚本看不到shellvariables?
在gcc中有作为内置macros的非保留标识符的原因是什么?
打开一个终端并使用以下命令:
ls -l > yourfile.txt
http://www.tuxfiles.org/linuxhelp/iodirection.html
如果你只想把一些文件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就足够了,正如其他人所回答的那样。
我会直接使用stat(1) :
stat -c '%s %n' *
或者如果递归地做:
find /some/path -type f -printf '%s %fn'
要做到这一点,请使用ls -l> yourfile.txt
你可以使用du命令:
du * > file.txt
du返回一个文件的空间使用情况,所以如果你需要一个目录中的所有文件,你必须使用*
例:
$ cd /path/to/directory $ du * > file.txt
要么
$ du /path/to/directory/* > /path/to/file.txt
编辑:刚刚意识到这是非常关键的问题,因为问题是关于重定向。
我不知道为什么du喜欢显示块而不是字节。
我个人认为ls -l $1 | awk '{ print $5 }' 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,SEEK_END) == 0)) { int size = ftell(f); fclose(f); fprintf(stdout,"%dn",size); } else { fprintf(stdout,"0n"); } } else { fprintf(stdout,"-1n"); } return 0; }
$ gcc -o /usr/bin/flsz flsz.c
$ flsz flsz.c
340
$ flsz /usr/bin/flsz > output.txt
$ cat output.txt
8972
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。