私はこのコードを試しています:
for f in jobs/UPDTEST/apples* ; do
nf=`echo $f | sed s:jobs\/::g`
echo $nf | tr '_' ' '
done > jobs
750apples*
種類のテキストファイルがあります。しかし、私はファイル名をいじっているだけなので、速いはずだと思っていましたが、約5分かかります。
これを行う別の方法はありますか?
のようなパラメータ展開を使用して、 および${parameter/pattern/string}
の呼び出しを取り除くことができます。あなたの場合、次のようになります。sed
tr
for f in jobs/UPDTEST/apples*; do
f=${f//jobs\//}
echo ${f//_/ }
done > jobs
まずcd jobs
、sed
tr
次に、 bash 変数の値で文字を置き換える必要はありません。
第三に、find
ループはまったく必要ありません。
f=$(cd jobs; find UPDTEST -name 'apples*' -depth 1)
echo "${f//_/ }" > jobs.log
ちなみに、jobs
ディレクトリとjobs
ファイルを同じディレクトリに置くことはできません。