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"