我想迭代目录中的多个目录,并将特定的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
答案 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/.