bash:从掩码列表复制文件的最后版本
源文件夹中有一组程序,但只能将最新版本复制到目标USB驱动器 从中可以看出,我的公式是:bash:从掩码列表复制文件的最后版本,bash,list,loops,for-loop,mask,Bash,List,Loops,For Loop,Mask,源文件夹中有一组程序,但只能将最新版本复制到目标USB驱动器 从中可以看出,我的公式是: f=$(find . -name AdbeRdr\*.exe | sort -n | tail -1) 那么,如何使find在一组掩码上的for循环中工作呢 set1="AdbeRdr\*.exe jre-\*.exe LibreOffice\*.msi" for m in $set1 do echo "m: $m" f=$(find . -name $m | sort -n | tail
f=$(find . -name AdbeRdr\*.exe | sort -n | tail -1)
那么,如何使find在一组掩码上的for循环中工作呢
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
)的情况下显式指定掩码,则正确输出最后一个文件
我哪里做错了?如果空格出现在文件名中,我该如何处理
谢谢 使用数组而不是字符串来保存元素,如下所示:
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
在变量周围使用双引号来处理文件名中的空格