UNIXシェルスクリプト第10章 Part8

ディレクトリをコピーするシェルスクリプト dircopy

find . -depth -print |

findコマンドは -depthオプションを使うとディレクトリ階層の深い順に表示させる。

付けた場合          付けなかった場合

a/b/c/d/e             a

a/b/c/d                a/b

a/b/c                   a/b/c/

a/b/f/d/e             a/b/c/d

a/b/f/d                a/b/c/d/e

a/b/f                   a/b/f

a/b                     a/b/f/d

a/x/f/d/e             a/b/f/d/e

a/x/f/d                a/x

a/x/f/o                a/x/f

a/x/f                   a/x/f/d

a/x/fo                 a/x/f/d/e

a/x                     a/x/f/o

a                        a/x/fo

-depthオプションをつける理由は、先に深い部分にアクセスして途中の読み込み不可や、検索不可といったエラーの要因を早めに見つけようとするため。

cpioを使ったコピーの場合、普通このオプションをつけた出力結果を渡す。

 

cpio -pdmu $TARGET 2>&1 |

cpioコマンドの基本オプションは3つある。

データを出力するときは-o、読み込んでくるときには-i、パス名を読み込んだコピーには-pを使う。

-dは必要に応じてディレクトリを作成する、-mはファイルの更新時刻を元のままのものを使う、-uは強制上書きという意味がある。