bash脚本读取目录中的所有文件

我如何循环目录? 我知道for f in /var/files;do echo $f;done; 这样做的问题是它会一次性吐出目录中的所有文件。 我想要一个接一个,并且可以用$ fvariables做一些事情。 我认为while循环将是最适合的,但我不知道如何实际编写while循环。

任何帮助,将不胜感激。

Solutions Collecting From Web of "bash脚本读取目录中的所有文件"

一个简单的循环应该工作:

 for file in /var/* do #whatever you need with "$file" done 

请参阅bash文件名扩展

要写一个while循环,你可以这样做:

 ls -f / var | 同时读取-r文件; 做cmd $文件;  DONE

这样做的主要缺点是cmd运行在一个子shell中,如果你想设置变量,会导致一些困难。 主要优点是shell不需要将所有的文件名加载到内存中,也没有通配符。 当目录中有很多文件时,这些优点是很重要的(这就是为什么我在ls上使用-f的原因;在一个大的目录中ls本身可能需要花费几十秒的时间才能运行, '/ var / *'中的文件可能会失败并显示glob错误。)

你可以没有循环:

 find /path/to/dir -type f -exec /your/first/command \{\} \; -exec /your/second/command \{\} \; 

HTH