名前のリストを含むファイルがあります。
john
paul
ringo
george
...
その後、さまざまな名前の複数のファイルがあります。
maria.iso
jose.iso
pablo.iso
john.iso
jack.iso
jane.iso
...
find
ファイルリストの1つと同じ名前のファイルのみを出力するか、一致するものがない場合はファイルを出力しないコマンドを実行したいと思います。私の例では:
john
このような:
find . -type f -name "*.iso" (in array)
しかし、これが可能かどうか、それからどこから始めるべきかわかりません。
これまで私の唯一のアイデアはforループを書くことでしたが、これは醜くて非効率的に見えます。
ありがとう
ベストアンサー1
readarray
名前を配列として読み取るために使用されますnames
。次に、配列の各要素を繰り返してコマンドを実行しますfind
。
readarray names < names.txt
for n in ${names[@]};do
find . -type f -name "${n}.iso"
done