列出当前工作目录中每个文件的大小

列出当前工作目录中每个文件的大小

我想一次显示当前工作目录中每个文件的大小,我写了这个脚本

for $filename in "/etc/passwd";$filesize=$(stat --format=%s "$filename");echo $filesize.

但我收到了这个错误信息

-bash: syntax error near unexpected token `$filesize=$(stat --format=%s "$filename")'

答案1

你的脚本中有很多错误

  1. 变量赋值var=value不是$var=value

  2. 循环for需要一个do和一个done

所以

for filename in "/etc/passwd"; do 
  filesize=$(stat --format=%s "$filename");
  echo $filesize
done

但请注意,这"/etc/passwd"不是“当前工作目录”——它是一个文件。如果你真的想循环遍历当前目录中的文件,那么

for filename in * . . .

请注意,除非文件数量非常大,否则你可以完全省略循环,只需执行

stat --format=%s *

或者

find . -maxdepth 1 -printf '%s\n'

答案2

另一个解决方案ls是:

ls -l |

while read f1 f2 f3 f4 f5 f6 f7 f8 f9
                do
                        echo "The size of $f9 is:"
                        echo "$f5"

                done

如需更多信息,请参阅这个答案


注意:

在某些情况下解析输出ls也许可以更好地避免。

相关内容