以 -(破折号)开头的文件名

lll*_*ook 8 shell shell-script filenames quoting

-l我的目录中有文件调用

现在我试着做

for i in *; do stat -c "%s %n" "$i"; done
Run Code Online (Sandbox Code Playgroud)

它列出了所有大小的文件,但在输出中间有类似的东西

395 koko.pub
stat: invalid option -- 'l'
Try 'stat --help' for more information.
2995974 list.txt
Run Code Online (Sandbox Code Playgroud)

所以它不能-l作为正常的文件名处理,我如何从 获得所需的行为stat

hee*_*ayl 21

./在文件名前使用:

for i in *; do stat -c "%s %n" "./$i"; done
Run Code Online (Sandbox Code Playgroud)

或用于--指示选项的结束stat

for i in *; do stat -c "%s %n" -- "$i"; done
Run Code Online (Sandbox Code Playgroud)

尽管对于调用的文件,该文件仍然会失败-(将报告在标准输入上打开的文件的信息,而不是-当前目录中的文件)。

  • 使用 `for i in ./*` 也应该有效 (5认同)

Ste*_*itt 7

添加--以标记选项的结尾stat

for i in *; do stat -c "%s %n" -- "$i"; done
Run Code Online (Sandbox Code Playgroud)