備忘録です。
CVSやSVNで管理していたソースコードをGitに移行する際に、CVSやSVNに関するディレクトリは不要なので、削除したいものです。
これらのディレクトリを再帰的に削除するコマンドです。
プロジェクトディレクトリに移動し、以下のコマンドを実行します。
1 | find . -type d -name <CVS or SVN> -print0 | xargs -0 rm -rf |
見慣れないfindコマンドの-print0オプションが気になったので調べました。
xargsコマンドは空白を区切り文字として扱います。
よって、findコマンドに-print0オプションを使わずに以下のコマンドを実行すると、空白を含むファイル名を分割してコマンドを実行してしまいます。
1 2 3 4 5 6 | mkdir tmp cd tmp touch '123 456.txt' find . -name '*.txt' | xargs ls ls: ./123: No such file or directory ls: 456.txt: No such file or directory |
xargsコマンドに-0を与え、区切り文字をNULL文字とし、且つ、findコマンドに-print0オプションを与え、findコマンドの区切り文字もNULL文字とする事で、空白を含むファイルやディレクトリ名をxargsで扱えるようにします。
1 2 3 4 5 | mkdir tmp cd tmp touch '123 456.txt' find . -name '*.txt' -print0 | xargs -0 ls ./123 456.txt |
以上です。
宮崎県在住。
プログラムを書いて暮らしています。趣味はルアーフィッシング、ギター。