如何在目录中循环?我知道有for f in /var/files;do echo $f;done;
问题是它会一次性吐出目录中的所有文件。我想逐个去,并能够使用$ f变量做一些事情。我认为while循环最适合,但我无法弄清楚如何实际编写while循环。
任何帮助都将不胜感激。
答案 0 :(得分:52)
答案 1 :(得分:9)
要使用while循环编写它,您可以执行以下操作:
ls -f /var | while read -r file; do cmd $file; done
这样做的主要缺点是运行cmd 一个子壳,如果你正在尝试,会造成一些困难 设置变量。主要优点是外壳 不需要将所有文件名加载到内存中,并且 没有全球化。当你有很多文件时 目录,这些优点很重要(那是 为什么我在ls上使用-f;在一个大型目录中ls本身就可以 需要几十秒才能运行,而-f速度则可以 很明显。在这种情况下'for file in / var / *' 可能会因全局错误而失败。)
答案 2 :(得分:5)
你可以没有循环:
find /path/to/dir -type f -exec /your/first/command \{\} \; -exec /your/second/command \{\} \;
HTH