Findコマンドでディレクトリ名を渡すために変数を使用する方法を知る必要があります。以下のコマンドを使用していますが、動作しません。
while read -r directory file ;do
echo "$directory"---this command works $HOME/data
echo "$file"
x="$(find $directory -type f -name "$file" -mtime -1 -printf "%f\n")"--not working
echo $x
done < "$HOME/static_data.txt"
ループを介してディレクトリとファイル名を渡したいと思います。ただし、ディレクトリの場合、次のエラーが発生します。
'$HOME/data' no such file or directory
そしてディレクトリを見ることができます。
ベストアンサー1
コマンドが「動作」してもecho "$directory"
拡張されず、$HOME
後で使用されません$directory
。
希望のディレクトリいいえ $HOME/data
、ディレクトリが(文字通り)存在しません。あなたが望むのは$HOME
(おそらく同様の)拡張です/home/user313150/data
。
evalを使用するとこの問題を克服できますが、eval
evalは危険な可能性があるため、他の解決策を見つけることをお勧めします。
while read -r directory file; do
directory=$(eval echo "$directory")
echo "$directory"
echo "$file"
x="$(find "$directory" -type f -name "$file" -mtime -1 -printf "%f\n")"
echo $x
done < "$HOME/static_data.txt"