7

Linux での演習としてこれを行っているだけですが、touch1 つの空のファイルを作成して複数のディレクトリに存在させるにはどうすればよいか疑問に思っていました。

たとえば、次のようなディレクトリ レイアウトがあります。

~/main
~/main/submain1
~/main/submain2
.
.
.
~/main/submainN

touchによって作成されたファイルをすべてのsubmainディレクトリに存在させるにはどうすればよいですか? 私の最初の考えは、各ディレクトリを使用してアクセスし、反復ごとにコマンドをcd呼び出すループを作成することです。touchよりエレガントなソリューションがあるかどうか疑問に思っていましたか?

4

2 に答える 2

27

これはどうですか:

find . -type d -exec touch {}/hiya \;

これは、ディレクトリの深さレベルに関係なく機能します。

説明

find . -type d -exec touch {}/hiya \;
  • find . -type d--> ディレクトリ構造内のディレクトリを検索します。
  • -exec touch {}/hiya \;--> 各結果が与えられると、その値が に格納され{}ます。だからtouch {}/hiya私たちはその「何か」に触れることです。最終\;execinfind句で必要です。

別のfind使用例:

find . -type d -exec ls {} \;

テスト

$ mkdir a1
$ mkdir a2
$ mkdir a3
$ mkdir a1/a3

ディレクトリを確認してください:

$ find . -type d
.
./a2
./a1
./a1/a3
./a3

タッチファイル

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

それらを探します:

$ find . -type f
./a2/hiya
./hiya
./a1/hiya
./a1/a3/hiya
./a3/hiya

ファイル/ディレクトリの合計リストは次のとおりです。

$ find .
.
./a2
./a2/hiya
./hiya
./a1
./a1/hiya
./a1/a3
./a1/a3/hiya
./a3
./a3/hiya
于 2013-07-30T14:09:00.407 に答える