フォルダ内のファイルを繰り返すときの奇妙な動作

フォルダ内のファイルを繰り返すときの奇妙な動作

ここで何が起こっているのかわかりません。私はMacでBash 3.2を使用しています。私は持っています:

ores_resource(){
  for f in "$(cd "$HOME/.oresoftware/bash" && find . -type f)"; do
       f="${f:2}"
       echo "my file $f"
  done;
}

私は次のような答えを受けました。

my file r2g.sh
./fame.completion.sh
./read_json.sh
./nlu.sh
./lmx.sh
./public-bash-utils.sh
./run-tsc-if.sh
./r2g.completion.sh
./fame.sh
./waldo.sh
./nlu.completion.sh

それでは、ここで正確に何が起こっているのでしょうか?各行の前にある「マイファイル」がログアウトされると思いましたか?

ベストアンサー1

オプションを使用するfindソリューションは次のとおりです-exec

ores_resource() {
  cd $HOME/.oresoftware/bash
  find . -type f -exec bash -c 'echo "my file ${1:2}"' bash {} \;
}

find見つかったファイル名ごとに、次のコマンド文字列を使用して新しいbashプロセスが開始されます-c。各ファイル名は{}bashプロセスにパラメータとして渡されます$1(variablesと同様に$f)。

おすすめ記事