0

我想遍历一个目录中的多个目录并将一个特定的 csv 文件复制到不同的位置。我的 shell 脚本知识处于初级水平。我发现了一些类似于我想做的解决方案,但问题是在我的情况下子目录名称不一样。

这是结构:我有根目录~/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 文件,其中 csv 文件名称以目录名称开头。但我只对一个特定的 csv 文件感兴趣。假设名称是 mycsvfile.csv。我想将此文件从每个子目录复制到不同的目录~/2013-03-03/new_dir

4

2 回答 2

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/ \;

...我总是在纠结什么味道正则表达式可以做什么以及如何做,这似乎有效

于 2013-03-07T20:13:35.393 回答
2

可能有很多方法可以做到这一点。这是一个相对简单的:

cd ~/2013-03-03
/bin/ls -1 */mycsvfile.csv | cpio -dump ~/2013-03-03/new_dir/.
于 2013-03-07T20:09:19.030 回答