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

use*_*829 15 bash

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

for i in MY-FOLDER/MOVIE*
do
Run Code Online (Sandbox Code Playgroud)

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

我怎么能避免它进入之后的事情

do
Run Code Online (Sandbox Code Playgroud)

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

Ign*_*ams 14

有了nullglob选项.

$ shopt -s nullglob
$ for i in zzz* ; do echo "$i" ; done
$ 
Run Code Online (Sandbox Code Playgroud)


Ada*_*iss 12

for i in $(find MY-FOLDER/MOVIE -type f); do
  echo $i
done
Run Code Online (Sandbox Code Playgroud)

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

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

在我写的时候,命令也会在子目录中找到文件; 你可以通过添加来防止这种情况-maxdepth 1