解決策

解決策

基本findコマンドが与えられた場合:

find . -type d

返された各ディレクトリに対して、そのディレクトリを現在のディレクトリにする対話型シェルを作成したいと思います。

答え1

解決策

これは働きます:

find . -execdir sh \;

デモ

# Create some sample directories
$ for i in {1..4}; do mkdir -p "/tmp/example/$i/foo" ; done

# spawn
$ find -s /tmp/example -name foo -execdir sh \;
sh-3.2$ pwd
/private/tmp/example/1
sh-3.2$ exit
sh-3.2$ pwd
/private/tmp/example/2
sh-3.2$ exit
sh-3.2$ pwd
/private/tmp/example/3
sh-3.2$ exit
sh-3.2$ pwd
/private/tmp/example/4
sh-3.2$ exit
$

どのように動作しますか?

探す

関連マンページ情報および/またはその他の情報:

-s:findにアルファベット順にアルファベット順にアルファベット順にファイル階層を移動させます。これはソリューションにとって重要ではありませんが、シェルの順序を予測可能にします。

/tmp/example:path引数 - findユーティリティは、リストされている各パスのディレクトリツリーを繰り返し探します。

-name pattern:検証中のパス名の最後の部分がパターンと一致する場合は、ファイルを一致させます。特殊シェルパターン一致文字(['',] ''、*'', and?'')をパターンの一部として使用できます。

-execdir utility \;: -execdir デフォルトオプションは -exec デフォルトオプションと同じですが、ユーティリティは現在ファイルが保存されているディレクトリで実行されます。

シェン

shshこのコンテキストで実行すると、現在のファイルが保存されているディレクトリに対話型シェルが作成されます。

関連情報