首页 > 解决方案 > 编写一个循环进入子目录文件夹,然后在 unix 中复制和重新标记文件夹名称

问题描述

亲爱的 Stackoverflowers,

我在编写进入具有多个文件夹的目录并复制并重新标记每个文件夹的名称的循环时遇到问题。每个文件夹都以相同的方式开始标记,后面跟着不同的数字,所以结构是:

groupfolder1  
   123456789_ab_1234  
   123456789_ab_1235  
   123456789_ab_1236  
   123456789_ab_1237  

groupfolder2  
   123456789_cd_1310  
   123456789_cd_1321    
   123456789_cd_1322  
   123456789_cd_1323  

我想进入每个组文件夹(例如,123456789_ab_1234)并创建一个具有相同内容但标记的新文件夹(例如,sub-1234)。

我一直在努力学习 Unix,但在从完成抽象练习到现实生活问题的过程中遇到了困难,所以非常感谢您的回复和任何关于您如何找到解决方案的解释。

问候 E

标签: unix

解决方案


woops 在错误的部分发布了这个。谢谢你的解释。

我试过这个: cd /media/Eunice/'Drive B'/groupfolder1/ for d in * do if test -d $d then mkdir /tmp/sub-$d (cd $d ; tar cf - .) | (cd /tmp/sub-$d ; tar xf -) mv /tmp/sub-$d $d/. 完成

并收到此错误。mkdir:无法创建目录'/tmp/sub-123456789_ab_1234':没有这样的文件或目录-bash:cd:/tmp/sub-123456789_ab_1234:没有这样的文件或目录

我担心这里的“d”指的是文件夹“123456789_ab_1234”,为了制作新文件夹,我需要取“123456789_ab_”后面的数字来为新文件夹制作标签,例如 sub-1234。有没有办法轻松地将“d”识别为“1234”


推荐阅读