ソースフォルダには一連のプログラムがありますが、コピー先のUSBドライブにコピーする必要があるのは最新バージョンのみです。
Bashスクリプトから-ディレクトリ内のファイルの最新バージョンを再帰的にコピーすると、式は次のようになります。
f=$(find . -name AdbeRdr\*.exe | sort -n | tail -1)
では、一連のマスクのforループ内でfindを機能させるにはどうすればよいでしょうか。
set1="AdbeRdr\*.exe jre-\*.exe LibreOffice\*.msi"
for m in $set1
do
echo "m: $m"
f=$(find . -name $m | sort -n | tail -1)
echo "f: $f"
cp $f /media/USB
done
$m
正しい値(AdbeRdr * .exeなど)を出力し、$f
空で、cp
親ディレクトリ全体をコピーします。変数()なしで明示的にマスクを指定するfind . -name AdbeRdr\*.exe | sort -n | tail -1
と、最後のファイルが正しく出力されます。
どこが間違っているのですか?また、ファイル名にスペースが含まれている場合、どうすればスペースを処理できますか?
ありがとう!