/bin/mv /myhome/templocation/images/*.iso /storage/data/repository/ >/dev/null 2>&1
我希望这个命令将/ myhome / templocation / images中的iso移动到/ storage / data / respository。
然而,看到的是不同的。在脚本的末尾,整个图像文件夹被移动到
/storage/data/repository/
。
Ex:/storage/data/repository/images/*.iso
...但我希望脚本能够复制/storage/data/respository/*.iso/
中的.iso
我哪里错了.. ??由于这个shell脚本在系统启动时运行,我无法调试。 任何建议。
在CentOs6上可以看到此行为。
答案 0 :(得分:0)
使用“*”进行shell扩展会导致随机错误和安全漏洞。 使用起来更安全:
find ... -exec mv {} dst;
像:
find -maxdepth 0 \ <-- do not enter subdirectories
-type f \ <-- just files (not links, directories)
-name "*.iso" \ <-- just *iso names
/myhome/templocation/images/ <-- base dir
-exec mv {} /storage/data/repository/ \; <-- {} will be replaced by each file found
答案 1 :(得分:0)
foreach file in(path/with/wildcards*)
do
if [ $file -f ]; # if file
then
mv $file 'new/location$file'
else
continue # if subdirectory
fi
done
echo finished.