.gitkeepファイルをすべてのディレクトリに作成する

Gitでコードを管理する場合、空ディレクトリが存在すると、管理対象になりません。


こんなときは、find コマンドの -exec オプションを使って、.gitkeepファイルを
全てのディレクトリにとりあえず作ってしまうのが楽です。


たとえば、Chefで新しいcookbookを作ったとき。

$ knife cookbook create mycookbook -o .                                                                                                                                                                                                            
WARNING: No knife configuration file found
** Creating cookbook mycookbook
** Creating README for cookbook: mycookbook
** Creating CHANGELOG for cookbook: mycookbook
** Creating metadata for cookbook: mycookbook

$ ls -laR mycookbook/
mycookbook/:
合計 52
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 ..
-rw-r--r--.  1 myuser myuser  467  3月 15 15:28 2015 CHANGELOG.md
-rw-r--r--.  1 myuser myuser 1480  3月 15 15:28 2015 README.md
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 attributes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 definitions
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 files
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 libraries
-rw-r--r--.  1 myuser myuser  284  3月 15 15:28 2015 metadata.rb
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 providers
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 recipes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 resources
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 templates

mycookbook/attributes:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/definitions:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/files:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 default

mycookbook/files/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/libraries:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/providers:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/recipes:
合計 12
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..
-rw-r--r--.  1 myuser myuser  136  3月 15 15:28 2015 default.rb

mycookbook/resources:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..

mycookbook/templates:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:28 2015 ..
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:28 2015 default

mycookbook/templates/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:28 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:28 2015 ..


こんな感じでfindコマンドを使うと、楽です。

$ find mycookbook -type d -exec touch {}/.gitkeep \;

$ ls -laR mycookbook/
mycookbook/:
合計 52
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:28 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
-rw-r--r--.  1 myuser myuser  467  3月 15 15:28 2015 CHANGELOG.md
-rw-r--r--.  1 myuser myuser 1480  3月 15 15:28 2015 README.md
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 attributes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 definitions
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 files
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 libraries
-rw-r--r--.  1 myuser myuser  284  3月 15 15:28 2015 metadata.rb
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 providers
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 recipes
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 resources
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 templates

mycookbook/attributes:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/definitions:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/files:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 default

mycookbook/files/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--. 1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/libraries:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/providers:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/recipes:
合計 12
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
-rw-r--r--.  1 myuser myuser  136  3月 15 15:28 2015 default.rb

mycookbook/resources:
合計 8
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

mycookbook/templates:
合計 12
drwxr-xr-x.  3 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 10 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--.  1 myuser myuser    0  3月 15 15:35 2015 .gitkeep
drwxr-xr-x.  2 myuser myuser 4096  3月 15 15:35 2015 default

mycookbook/templates/default:
合計 8
drwxr-xr-x. 2 myuser myuser 4096  3月 15 15:35 2015 .
drwxr-xr-x. 3 myuser myuser 4096  3月 15 15:35 2015 ..
-rw-r--r--. 1 myuser myuser    0  3月 15 15:35 2015 .gitkeep

今日はこんなところで。