Bash Shell脚本迭代文件夹中的文件夹并复制文件

时间:2013-03-07 19:47:52

标签: shell file-copying

我想迭代目录中的多个目录,并将特定的csv文件复制到不同的位置。我的shell脚本知识处于初级阶段。我发现几个solutions类似于我的想法,但问题是在我的情况下子目录名不相同。

以下是结构:我有根目录~/2013-03-03/

然后我有以下目录,我只放了几个,但我有近300个子目录。

ab   bar      ch   eml      gn   iu   kv       mhr     ne   pfl       sc   sw   ug                   zea
ace  bat-smg  chr  ext      got  jbo  kw       mi      nov  pi        scn  szl  ur                   zh-classical
af   bcl      chy  ff       gu   kaa  ky       ml      nrm  pih       sco  tet  ve                   zh-min-nan
ak   bh       ckb  fiu-vro  gv   kab  lad      mn      nso  pnb       sd   tg   vec                  zh-yue
als  bi       co   fj       ha   kbd  lbe      mo      nv   pnt       se   ti   vep 

每个目录都有数百个csv文件,其中csvfile名称以目录名称开头。但我只对一个特定的csv文件感兴趣。假设名称是mycsvfile.csv。我想将此文件从每个子目录复制到~/2013-03-03/new_dir

中的其他目录

2 个答案:

答案 0 :(得分:4)

find ~/2013-03-03/ -name 'mycsvfile.csv' -exec cp {} ~/2013-03-03/new_dir/ \;

如果文件名为subfoldername/subfoldername-mycsvfile.csv,请使用以下内容:

find ~/2013-03-03/ -regextype posix-awk -regex '.*/([^/]*)/\1-mycsvfile.csv' -exec cp {} ~/2013-03-03/new_dir/ \;

......我总是在努力克服正则表达式可以做什么以及如何做,这似乎有效

答案 1 :(得分:2)

可能有很多方法可以实现这一目标。这是一个相对简单的:

cd ~/2013-03-03
/bin/ls -1 */mycsvfile.csv | cpio -dump ~/2013-03-03/new_dir/.