bash Shell脚本循环遍历目录中的所有文件

时间:2019-11-20 08:53:01  来源:igfitidea点击:

在Linux shell脚本中,如何遍历指定目录中的所有文件?

解决方案

在shell脚本中,可以通过for循环和通配符轻松的遍历所有的文件。

语法

通用语法如下:

for f in file1 file2 file3 file5
do
echo "处理文件 $f"
done

还可以使用shell变量:

FILES="file1
/path/to/file2
/etc/resolv.conf"
for f in $FILES
do
	echo "处理文件 $f"
done

使用通配符浏览指定类型的文件,例如*.c:

$ for f in *.c; do echo "Processing $f file.."; done

但是,上述语法存在一个问题。如果当前目录中没有c文件,它将扩展为*.c。为避免此问题,请在for循环之前添加以下语句:

#!/bin/bash
shopt -s nullglob
$ for f in *.c; do echo "Processing $f file.."; done

Shell脚本中循环遍历所有文件示例

#!/bin/bash
FILES=/path/to/*
for f in $FILES
do
  echo "处理文件: $f ..."
  cat $f
done

使用While循环遍历文件

可以将文件列表放到文本文件中,通过while循环读取。

例如,创建一个名为/tmp/data.txt的文本文件,如下所示:

file1
file2
file3

可以使用while循环来逐一读取和处理每个循环:

#!/bin/bash
        while IFS= read -r file
        do
                [ -f "$file" ] && rm -f "$file"
        done < "/tmp/data.txt"