我正在使用我的bash shell脚本遇到一些麻烦,我用它来打印ls -l命令的第6和第10个字段。它按原样工作,但我不确定如何在它的末尾添加回声。它以字节为单位打印文件名和大小,但我想知道是否可以在每行的末尾说“BYTES”,以明确文件大小的单位。
到目前为止我有
/bin/ls -ls "$directory" | awk '{print $10,$6}'
这显然不是整个代码,而是唯一与我的问题相关的东西。我是否需要为变量分配回声然后添加它?我是bash shell脚本的新手,所以如果我的问题不好,我很抱歉。
编辑:如果我使用这样的命令
wastesizeandlist ~/dev
我得到的输出是
This directory exists
Performing command
wastesizeandlist 520
我在脚本中添加了“BYTES”,就像有人建议的那样(为忘记你的名字道歉,我现在看不到它)。现在的输出是
This directory exists
Performing command
BYTES
wastesizeandlist 520 BYTES
几乎就在那里。除了BYTES下的表演命令回音。我试图让它看起来像这样
This directory exists
Performing command
wastesizeandlist 520 BYTES
我知道我们不应该解析ls的输出,但我有一个赋值,它要求我获取目录中所有文件的文件大小和名称。如果有更好的方法,如果你能告诉我,我们将不胜感激。
编辑:如果我尝试-lsR,我得到这样的输出
Filename: Size: BYTES
Filename: wastesizeandlist Size: 520 BYTES
Filename: test Size: 4096 BYTES
Filename: Size: BYTES
Filename: Size: BYTES
Filename: Size: BYTES
Filename: 1 Size: 5 BYTES
这里test是子目录,1是该子目录中的文件。我现在要问的是如何删除出现在开头的行以及出现在新目录之前的行?我在另一个目录上尝试了该命令,它有同样的问题。一个看似无名且无大小的文件在开始时然后在进入子目录后3?所有帮助将不胜感激。
编辑:
刚刚将尾部-n +2更改为+3并删除了第一行。如何删除其他空行并将输出放入适当的间隔列?
你可以使用像/bin/ls -ls | tail -n +2 | awk '{print $10,$6,"BYTES"}'
这样的东西来移除你的ls
命令无法正确解析的awk
输出中的第一行。
@ Lenik
根据您的问题:
报价:
..............我有一项任务,要求我获取目录中所有文件的文件大小和名称。如果有更好的方法,如果你能告诉我,我们将不胜感激。
引用结束
这样,您可以使用“du”而不是“ls”作为第一列,以“人类可读的格式”获取目录中的文件大小。第二列是文件名(根据需要迭代$ dir_to_check变量)
dir_to_check="./testKalin/" ; for file in `find ${dir_to_check} -type f` ; do du -h ${file} ; done
10M ./testKalin/10
9.0M ./testCalin/9
8.0M ./testCalin/8
7.0M ./testKalin/7
6.0M ./testKalin/6
5.0M ./testCalin/5
4.0M ./testCalin/4
3.0M ./testCalin/3
2.0M ./testCalin/2
1.0M ./testCalin/1
示例:
for dir in ./testKalin ./testKalin2 ; do dir_to_check=${dir} ; for file in `find ${dir_to_check} -type f` ; do du -h ${file} ; done ; done
10M ./testKalin/10
9.0M ./testCalin/9
8.0M ./testCalin/8
7.0M ./testKalin/7
6.0M ./testKalin/6
5.0M ./testCalin/5
4.0M ./testCalin/4
3.0M ./testCalin/3
2.0M ./testCalin/2
1.0M ./testCalin/1
10M ./testKalin2/10
9.0M ./testCalin2/9
8.0M ./testCalin2/8
7.0M ./testKalin2/7
6.0M ./testCalin2/6
5.0M ./testKalin2/5
4.0M ./testCalin2/4
3.0M ./testCalin2/3
2.0M ./testCalin2/2
1.0M ./testCalin2/1