0

ディレクトリ内の複数のディレクトリを繰り返し処理し、特定のcsvファイルを別の場所にコピーしたいと思います。私のシェルスクリプトの知識は初心者レベルです。私が考えていることに似た解決策がいくつか見つかりましたが、問題は私の場合、サブディレクトリ名が同じではないことです。

構造は次のとおりです。ルートディレクトリがあります~/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名はディレクトリの名前で始まります。しかし、私は1つの特定の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 に答える