Move命令移动整个目录而不是shell脚本中的特定文件

时间:2014-12-22 17:23:43

标签: linux shell centos6 mv

/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上可以看到此行为。

2 个答案:

答案 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.