Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash:从掩码列表复制文件的最后版本_Bash_List_Loops_For Loop_Mask - Fatal编程技术网

bash:从掩码列表复制文件的最后版本

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

源文件夹中有一组程序,但只能将最新版本复制到目标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 -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
在变量周围使用双引号来处理文件名中的空格