Shell 循环遍历特定目录中的所有文件

时间:2021-03-26 05:55:08

标签: shell

如何使用shell脚本遍历特定目录中的所有文件?我在当前工作目录中有一个目录,即 .temp。在 .temp 中还有另一个目录索引,其中包含一些文件。

我尝试了以下方法:

for file in ./.temp/index/*
do 
  echo "File in index: $file"
done 

for file in "./.temp/index"/*
do 
  echo "File in index: $file"
done 

但是,它会将 $file 打印为 ./.temp/index/$file。例如:

File in index: ./.temp/index/first.txt
File in index: ./.temp/index/second.txt
File in index: ./.temp/index/third.txt
...

是否有符合 POSIX 标准的方式来循环遍历该目录中的实际文件?

2 个答案:

答案 0 :(得分:0)

for _file in `find . -type f`;
do
    echo "File: $_file";
done

-type f 将在目录中查找文件。您可以根据需要添加其他过滤器。

答案 1 :(得分:0)

您可以通过使用 find 和 -printf 使用 %f 仅打印文件名来避免同时使用循环:

find ./.temp/index -maxdepth 1 -type f -printf "File in index: %f\n"