Перечислите размер каждого файла в текущем рабочем каталоге

Я хотел отобразить размер каждого файла в текущем рабочем каталоге по одному, и я записал этот сценарий

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

Но я получаю это сообщение об ошибке

-bash: syntax error near unexpected token `$filesize=$(stat --format=%s "$filename")'
0
задан 15 March 2020 в 00:09

2 ответа

В Вашем сценарии существует много ошибок

  1. переменное присвоение var=value нет $var=value

  2. a for циклу нужен a do и a 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'
1
ответ дан 15 March 2020 в 07:39

Еще одно решение с использованием 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 лучше избегать.

0
ответ дан 16 March 2020 в 20:58

Другие вопросы по тегам:

Похожие вопросы: