检查目录中是否存在文件名

检查目录中是否存在文件名

我有一个文件包含人名,例如

Sam 
Tom
Dad
Jack

我有一个目录包含name.txtname.zip其中文件的形式不相同,例如

Dad.txt
Tom.zip
Jack.zip

如何查找 sam 不在目录中?

这是我的想法:

input="people_name"

while IFS= read -r line
    do
    if [ -f "/my_files/${line}.zip"]|| [ -f "/my_files/${line}.txt" ] ; then
        echo "/${line} exists."
    else
        echo "/${line} does not exists."
    fi
done < "$input"

输出应该是:

Sam does not exist
Tom exists
Dad exists
Jack exists

但终端输出:

Sam does not exist
Tom does not exists
Dad does not exists
Jack does not exists

答案1

当在拥有目录my_files和文件的目录中运行时,此脚本有效people_name

#!/bin/bash

input="people_name"

while IFS= read -r line

    do

    if [ -f "my_files/${line}.zip" ] || [ -f "my_files/${line}.txt" ] ; then
        echo "${line} exists."
    else
        echo "${line} does not exist."
    fi
done < "$input"

使用此输入文件:

Sam
Tom
Dad
Jack

调整:

  • 添加了“shebang”作为第一行来指示bash应该运行该脚本。
  • 在if语句中添加了一些空格
  • 删除了前缀斜杠,因为我认为您在根目录中没有该目录my_files,并且您不希望输出行以斜杠开头。

相关内容