ディレクトリ階層であるファイル構造全体(何千ものファイルと数百のディレクトリを含む)をコピーしたいと思います。ノードモジュールコピープロセスから除外するディレクトリです。
名前付きディレクトリを除外するオプションを使用して、ディレクトリとそのディレクトリ内のすべてのファイルとサブディレクトリから繰り返しコピーできるUnixコマンドはありますか<name>
?
それは次のとおりです。
cp root/ rootCopy/ --except node_modules
?
そうでない場合は、bashなどを書かずにコマンドラインでこれを簡単に行う方法はありますか?
答え1
rsync
または、コマンドを試すこともできますtar
。
--exclude=PATTERN exclude files matching PATTERN
--exclude-from=FILE read exclude patterns from FILE
rsync -avz --exclude 'dir*' source/ destination/
答え2
不気味なアプローチですが、私には効果がありました。
(find source|egrep -v "node_modules|^source/exact/node_plugin" && echo tmptarget)|xargs cp --parents
mv tmptarget/source target
必要に応じて説明してください。cp
仕組みは次のとおりです。
cp source1 source2 ... sourceN target
- したがって、
find
全体の構造を印刷します。 egrep
不要な分岐をすべて除外するために使用されます。パターンが正しく設定されていることを確認してください。^
正確なブランチを除外するか、node_modules
すべてのブランチを除外するには、フルパスを使用してください。- コマンドを使用してターゲットフォルダを印刷します
echo
。 xargs
これらすべてのラインを直接ご案内いたします。cp
--parents
ここではこのオプションは使用できないため、ターゲット-r
フォルダのすべての内容がめちゃくちゃになるため、親フォルダを作成する必要があります。- 最終的に
mv
実際の目標を達成する新しい構造