使用bash数组循环查找列表中的文件

时间:2013-08-02 03:12:00

标签: bash

我正在尝试编写一个脚本来读取带有文件名的文件,并输出是否在目录中找到这些文件。

逻辑上我认为它是这样的:

$filelist = prompt for file with filenames
$directory = prompt for directory path where find command is performed

new Array[] = read $filelist line by line

for i, i > numberoflines, i++
     if find Array[i] in $directory is false 
        echo "$i not found"
export to result.txt

我一直很难让Bash这样做,有什么想法吗?

2 个答案:

答案 0 :(得分:0)

首先,我假设所有文件名都是在标准输入上提供的。例如,如果文件names.txt包含文件名并且check.sh是脚本,则可以像

一样调用它。
cat names.txt | ./script.sh

获取所需的行为(即使用names.txt中的文件名)。

其次,在script.sh内,你可以在标准输入的所有行上循环如下

while read line
do
  ... # do your checks on $line here
done

编辑:由于@rici指出的问题,我调整了我的答案,使用标准输入而不是命令行参数。

答案 1 :(得分:0)

while read dirname
do
  echo $dirname >> result.txt
  while read filename
  do
    find $dirname -type f -name $filename >> result.txt
  done <filenames.txt
done <dirnames.txt