Linuxでディレクトリをまとめて作成・追加する方法
Linuxでディレクトリをまとめて作成・追加する方法を紹介します。
1.問題点
仕事で数百あるディレクトリに「foo」というサブディレクトリを作成する必要が生じました。
1回きりであれば人海戦術もありかと思いましたが、同じ作業が今後もときどき発生します。
ということで、ツールを作るほどのことでもないのでシェルのコマンドラインで一発でディレクトリを一括追加・作成したいのですが方法が分かりません。
ということで、ディレクトリをまとめて作成・追加する方法を紹介します。
2.ディレクトリをまとめて作成・追加する
ディレクトリを追加・作成したい親のディレクトリに移動したあと、コマンドラインに次のように入力します。
% find . -type d | xargs -I{} mkdir {}/foo
findは、指定したディレクトリを探スコマンドです。
ここではディレクトリに"."を指定しているので、カレントディレクトリ配下を探します。
また"-type d"はディレクトリに絞り込むためのオプションです。
これでカレントディレクトリ配下のサブディレクトリをすべて表示してくれます。
実行例
% find . -type d
./dir1
./dir1/dir1_1
./dir1/dir1_2
./dir2
./dir2/dir2_1
./dir2/dir2_2
また、xargsは標準入力をもとに生成したコマンドラインを実行するコマンドです。
% コマンド(=xargsの標準入力) | xargs -I{} mkdir {}/foo
-Iオプションは、標準入力(ここではfindの結果)の改行ごとに、xargsの後ろに記述したコマンドを実行するためのオプションです。
つまり、
% find . -type d | xargs -I{} mkdir {}/foo
とすることで、
% mkdir ./dir1/foo
% mkdir ./dir1/dir1_1/foo
% mkdir ./dir1/dir1_2/foo
% mkdir ./dir2/foo
% mkdir ./dir2/dir2_1/foo
% mkdir ./dir2/dir2_2/foo
という処理が実行されることになります。
いきなりmkdirしたくない場合は、mkdirの部分をechoに書き換えてコマンドパラメータを確認するとよいでしょう。
% find . -type d | xargs -I{} echo {}/foo
Posted by yujiro このページの先頭に戻る
- VMをundefineできない場合の対処
- cpanflute2でエラーになる場合の対処
- シェルスクリプトをバイナリ化する「shc」
- OpenSSLで文字列を暗号化・複号化する方法
- sshログインに時間がかかる場合の対処
- vi/vimで範囲指定して置換する方法
- vi/vimでマークした行に移動する方法
- vi/vimで複数行を一括削除する方法
- LinuxでOSキャッシュをクリアする方法
- lessで検索文字列だけを表示する方法
- tailコマンドでファイルがローテートされても追従する方法
- svnでファイルやディレクトリを削除する方法
- phpMyAdminで「unknown system variable 'lc_messages'」となる場合の対処
- Linux(CentOS)でapxsがみつからない場合の対処
- PHP7.3とApacheを連携させる方法
トラックバックURL
コメントする
greeting