ファイル名がディレクトリにあることを確認してください。

ファイル名がディレクトリにあることを確認してください。

次のユーザー名を含むファイルがあります。

Sam 
Tom
Dad
Jack

同じ形式ではないファイルを含めるか、またはname.txt含むディレクトリがあります。name.zip

Dad.txt
Tom.zip
Jack.zip

サムを見つける方法はディレクトリにありませんか?

これが私の考えです:

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

調整:

  • bashスクリプトを実行する必要があることを示すために、最初の行に "shebang"を追加しました。
  • ifステートメントにスペースを追加しました。
  • ルートディレクトリに対応するディレクトリがないと思いmy_files、出力行がスラッシュで始まることを望まないので、プレフィックススラッシュを削除しました。

おすすめ記事