1

ディレクトリ構造を維持しながら、今日作成/編集したファイルだけを別のディレクトリ「変更セット」にコピーしたい

私は次のスクリプトを思いついた

cd ./myproject/

find ./* -mtime -1 -daystart -exec cp {} ../changeset/{} \;

上記の欠点は、ディレクトリが作成されず、コピーでエラーがスローされることです。

私は手動で ../changeset/ に入り、コマンドがエラーなしで実行されるまでフォルダー構造を作成しました..しかし、それは少し面倒です。

これに対する簡単な解決策はありますか?

4

2 に答える 2

2
find * -mtime -1 -daystart -print0 | cpio -pd0 ../changeset

cpioは古くて奇妙なアーカイブプログラムであり、この仕事に最適なツールである場合があります。これ-pを使用して、stdinで指定されたファイルを別のディレクトリにコピーします。-d必要に応じてディレクトリを作成します。

于 2012-12-20T01:43:30.337 に答える
0

ジョンのものほどエレガントではありませんが、に依存していない別のソリューションを見つけましたcpio

cd ./myproject/

# Create all directories
find ./* -type d -exec mkdir ../changeset/{} \;

# Copy files
find ./* -mtime -1 -daystart -exec cp {} ../changeset/{} \;

# Delete empty directories, run this several times because after moving a child the parent directory needs to be removed
find ../changeset/ -type d -empty -exec rmdir {} \;
于 2013-02-28T07:32:11.740 に答える