Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在unix中编写循环以进入子目录文件夹,然后复制并重新标记文件夹名称_Unix - Fatal编程技术网

在unix中编写循环以进入子目录文件夹,然后复制并重新标记文件夹名称

在unix中编写循环以进入子目录文件夹,然后复制并重新标记文件夹名称,unix,Unix,亲爱的飞越者: 我在编写一个循环时遇到问题,该循环进入一个包含多个文件夹、副本和 重新标记每个文件夹的名称。每个文件夹的开始标记方式相同,后面跟着不同的数字, 因此,结构是: groupfolder1 123456789_ab_1234 123456789_ab_1235 123456789_ab_1236 123456789_ab_1237 groupfolder2 123456789_cd_1310 123456789_cd_

亲爱的飞越者:

我在编写一个循环时遇到问题,该循环进入一个包含多个文件夹、副本和 重新标记每个文件夹的名称。每个文件夹的开始标记方式相同,后面跟着不同的数字, 因此,结构是:

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  
我想进入每个groupfolder(例如,123456789_ab_1234)并创建一个具有相同内容但带有标签的新文件夹(例如,sub-1234)

我一直在尝试学习Unix,但我正在努力从完成抽象练习过渡到实际问题,因此非常感谢您的回答和对如何找到解决方案的任何解释


如果我知道你想要这样的东西

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/.
  fi
done
上面我假设您已经在groupfolder1中了

我不知道你的所有目录都是怎样的,也许你可以添加一个嵌入循环,从包含groupfolder1/groupfolder2等的父级开始,然后像这样自动进入它们:

for dd in *
do
  if test -d $dd
  then
    cd $dd
    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/.
      fi
    done 
    cd ..
  fi
done

woops把这个贴错了地方。谢谢你的解释

我试过这个: cd/media/Eunice/“驱动器B”/groupfolder1/ 为d-in* 做 如果测试-d$d 然后 mkdir/tmp/sub-$d (cd$d;焦油cf-)|(cd/tmp/sub-$d;焦油xf-) mv/tmp/sub-$d$d/。 fi 完成

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


我担心这里的“d”指的是文件夹“123456789_ab_1234”,为了创建新文件夹,我需要在“123456789_ab_”之后添加数字,以便为新文件夹(如sub-1234)创建标签。有没有一种方法可以轻松地将“d”识别为“1234”

亲爱的布鲁诺,谢谢你的回复。非常感谢。对于您的第一个代码。检查一下,“test-d$d”这行是什么意思。行“(cd$d;tar cf-)|(cd/tmp/sub-$d;tar xf-)是可选的吗?@Eunice
test-d$d
checks$d是一个目录,在*中d的
将在所有元素上迭代,因此files@Eunice
(cd$d;tar cf-)|(cd/tmp/sub-$d;tar xf-)
不能是可选的,这是执行您请求的复制的行