我正在尝试编写一个脚本来读取带有文件名的文件,并输出是否在目录中找到这些文件。
逻辑上我认为它是这样的:
$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这样做,有什么想法吗?
答案 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