- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ある階層のすべてのディレクトリ内にディレクトリ作成)
ある階層のディレクトリ内に新たなディレクトリを作成する方法
このQ&Aのポイント
- 質問者は特定の階層にあるすべてのディレクトリ内に新たなディレクトリを作成したいと考えています。
- 質問者は '*1' のようなパターンでディレクトリを作成しようとしましたが、エラーメッセージ 'mkdir: cannot create directory `/home/hoge/*/1': No such file or directory' が表示されました。
- 質問者はシェルスクリプトに明るくないため、手作業でディレクトリを作成する方法を探しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Unix系なら、findコマンドを使ってやるのが早そうです。 % find -mindepth 1 -maxdepth 1 -type d -exec mkdir {}/1 \; でいいと思いますよ。 詳しくは man find でどうぞ。
その他の回答 (2)
- notnot
- ベストアンサー率47% (4900/10359)
回答No.3
シェルコマンドラインのワイルドカードは、存在するファイルやディレクトリの名前に展開されます。 これから作るつもりと言うことは、存在しないわけで展開できません。 展開できない場合はそのままになるので、mkdir には "/home/hoge/*/1" という文字列が渡って、"/home/hoge/*" というディレクトリの下に "1" というのを作ろうとしますが、"/home/hoge/*" という名前のディレクトリが無いので、エラーになります。 普通は、こうかな。 for i in *;do test -d $i && mkdir $i/1; done エラーメッセージが出てもいいなら、もっと短く、 for i in *;do mkdir $i/1; done でもいいです。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
echo と xargs を組み合わせるのが簡単かなぁ. なぜそのようなエラーが出るかわかりますか?
お礼
ご回答ありがとうございます。 処理としてはgraycat000さんの方法で出来たのですが、エラーの原因に興味があります。 普通に読めばそんなディレクトリはないと言われてるのは分かりますが、ワイルドカードの任意の文字列ということではそれぞれのディレクトリとして認識しないということでしょうか?