次のユーザー名を含むファイルがあります。
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
、出力行がスラッシュで始まることを望まないので、プレフィックススラッシュを削除しました。