Bash脚本根据名称将所有文件从当前目录传输到特定目录

时间:2017-09-15 03:49:22

标签: linux bash shell command-line

我有这些文件:

  1. 100-1.jpg
  2. 100-2.jpg
  3. 200-1.jpg
  4. 200-2.jpg
  5. 我希望将这些文件转移到基于文件名的特定文件夹

    1. 100 / 100-1.jpg
    2. 100 / 100-2.jpg
    3. 200 / 200-1.jpg
    4. 200 / 200-2.jpg
    5. 我该怎么做?

      到目前为止我尝试了什么

      cd ~/images
      for f in *.jpg
      do 
         mv -v "$f" ~/images/${f}/${f%}.jpg
      done
      

      我如何知道我在破折号之前剪切了字符串,例如200-1到200并存储在变量中?

      所以我可以这样做

       cd ~/images
          for f in *.jpg
          name="$f without the .jpg"
          do 
             mv -v "$f" ~/images/${f}/${f%}.jpg
          done
      

1 个答案:

答案 0 :(得分:1)

#!/bin/bash
cd ~/images
for f in *.jpg
do
  mkdir -p ${f%-*}
  echo ${f%-*}
  mv "$f" ~/images/${f%-*}/${f%}
done