Bash脚本,循环文件夹中的文件失败

时间:2011-09-19 21:30:57

标签: bash

我在使用此bash脚本代码的文件夹中循环浏览某些文件(所有以MOVIE开头的文件):

for i in MY-FOLDER/MOVIE*
do

当文件夹中有文件时,它可以正常工作。但是当没有任何内容时,它会以某种方式继续使用它认为名为MY-FOLDER / MOVIE *的文件。

如何在

之后避免输入内容
do

如果文件夹中没有任何文件?

3 个答案:

答案 0 :(得分:13)

使用nullglob选项。

$ shopt -s nullglob
$ for i in zzz* ; do echo "$i" ; done
$ 

答案 1 :(得分:12)

for i in $(find MY-FOLDER/MOVIE -type f); do
  echo $i
done

find实用程序是瑞士军刀之一。它从您提供的目录开始,并根据您提供的选项查找所有子目录中的所有文件。

-type f只会找到常规文件(而不是目录)。

正如我写的那样,该命令也会在子目录中找到文件;您可以通过添加-maxdepth 1

来阻止这种情况

答案 2 :(得分:3)

for file in MY-FOLDER/MOVIE*
do
  # Skip if not a file
  test -f "$file" || continue
  # Now you know it's a file.
  ...
done