В исходной папке есть набор программ, но только последняя версия должна быть скопирована на целевой USB-накопитель.bash: копировать последнюю версию файла из списка масок
Из Bash Script - Copy latest version of a file in a directory recursively, это показывает, что моя формула будет:
f=$(find . -name AdbeRdr\*.exe | sort -n | tail -1)
Так как сделать работу найти внутри для цикла на множестве масок?
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
), последний файл будет выводиться правильно.
Куда я иду не так? И как я могу обрабатывать пробелы, если это произойдет в именах файлов?
Спасибо!
Спасибо, он отлично работает! – user2090692