2

私はこのコードを試しています:

for f in jobs/UPDTEST/apples* ; do
    nf=`echo $f | sed s:jobs\/::g`
    echo $nf | tr '_' ' '
done > jobs

750apples*種類のテキストファイルがあります。しかし、私はファイル名をいじっているだけなので、速いはずだと思っていましたが、約5分かかります。

これを行う別の方法はありますか?

4

2 に答える 2

3

のようなパラメータ展開を使用して、 および${parameter/pattern/string}の呼び出しを取り除くことができます。あなたの場合、次のようになります。sedtr

for f in jobs/UPDTEST/apples*; do
    f=${f//jobs\//}
    echo ${f//_/ }
done > jobs
于 2013-07-13T08:53:22.323 に答える
1

まずcd jobssed

tr次に、 bash 変数の値で文字を置き換える必要はありません。

第三に、findループはまったく必要ありません。

f=$(cd jobs; find UPDTEST -name 'apples*' -depth 1)
echo "${f//_/ }" > jobs.log

ちなみに、jobsディレクトリとjobsファイルを同じディレクトリに置くことはできません。

于 2013-07-13T08:58:12.590 に答える