CoffeeScript/JavaScriptファイルを含む他のたくさんのフォルダーを含むディレクトリがあります。 CoffeeScriptファイルを同じフォルダー構造で新しいフォルダーにコンパイルできます。
私がやりたいのは、ソースフォルダー内のすべての* .jsファイルを再帰的に宛先フォルダーにコピーすることです。また、宛先フォルダにすでに存在するファイルを上書きしたくありません。これを達成する方法について何か考えはありますか?
別の同様の質問を検討した後、cp -n source/**.js desination/
とcp -Rn source/**.js desination/
を使用してみましたが、機能していないようです。
これを達成する方法はありますか?
あなたはrsyncを使うことができます(それはローカルコピーもします)
rsync -r --ignore-existing --include=*/ --include=*.js --exclude=* source/ destination
-r
ディレクトリに再帰するには、--ignore-existing
宛先の既存のファイルを無視するには、include
およびexclude
フィルターは、すべてのディレクトリを含め、すべての* .jsファイルを含め、残りを除外することを意味します。最初のインクルードが必要です。それ以外の場合、最終的な除外では、コンテンツがスキャンされる前にディレクトリも除外されます。最後に、-P
進行状況を確認したい場合は、--list-only
実際にコピーせずに何がコピーされるかを確認したい場合は、-t
タイムスタンプを保持したい場合。
これは関係ありませんが、15年分のドキュメントを1つのパーティションから別のパーティションに移動したときに、最近rsyncコマンドを学びました。ファイルがそこにあることを確信してから、古いパーティションをワイプして他のファイルをそこに置きました;私は後ですべてのタイムスタンプを失ったことに気づき、-tフラグを発見しました。私の苦痛を共有したかっただけです: '(
これは、cpを使用しても実現できます。こちらをご覧ください:
Sudo cp -vnpr /xxx/* /yyy
xxx =ソース
yyy =宛先
v =詳細
n =クローバーなし(上書きなし)
p =権限を保持する
r =再帰的
Manページを見ると、-n
オプション。
-n, --no-clobber
do not overwrite an existing file (overrides the previous -i option)
私のディストリビューションには利用可能なクローバーがありませんでした。
echo n | cp -vipr xxx yyy
xxx =ソース
yyy =宛先
v =詳細
i =対話型(上書きを促す)| コマンドの前に "echo n |"が付いているのはこのためです
p =権限を保持する
r =再帰的