linux-将编号文件列表插入另一个编号文件列表的中间

linux-将编号文件列表插入另一个编号文件列表的中间

我有一个文件夹(苹果),其中包含文件

doc001.jpg
doc002.jpg
...
doc010.jpg, 

另一个文件夹(banana)也包含文件

doc001.jpg   
...
doc150.jpg  

我怎样才能将 apple 的内容插入到 banana 中间并重命名它们?这样 banana 文件夹就有了它现有的doc050.jpg文件

apple/doc001.jpg

变成

banana/doc051.jpg 

及以后,之前的banana/doc051.jpgthroughbanana/doc150.jpg被重命名banana/doc060.jpg为 through banana/doc160.jpg?

答案1

这不是最优雅的解决方案,但它很容易理解并且可以发挥作用:

  1. 制作一个新的香蕉文件夹

    mkdir banana.new
    
  2. 复制前 50 个文件(由于前面有0s,所以这比需要的稍微难一些):

    for i in {1..9}; do cp banana/doc00$i.jpg banana.new/; done
    for i in {10..50}; do cp banana/doc0$i.jpg banana.new/; done
    
  3. 获取苹果的文件并重命名

    i=51; find apple/ -type f | sort | \
      while read n; do cp $n banana.new/doc0$i.jpg; let i++; done 
    
  4. 获取 banana 的其余文件并重命名

    for i in {51..89}; do \
      let n=$i+10; cp banana/doc0$i.jpg banana.new/doc0$n.jpg; done
    for i in {90..99}; do \
     let n=$i+10; echo "cp banana/doc0$i.jpg banana.new/doc$n.jpg"; done
    for i in {100..150}; do \
     let n=$i+10; cp banana/doc$i.jpg banana.new/doc$n.jpg; done
    

至此,banana.new应该就完全符合你的要求了。确保它是然后将其重命名为banana

相关内容