18

私はこのコマンドを持っています:

$ find $PWD -name "*.jpg" | awk '{system( "echo "  $(sub(/\//, "_")) ) }'
_home/mol/Pulpit/test/1.jpg

同じことですが、gsub を使用します。

$ find $PWD -name "*.jpg" | awk '{system( "echo "  $(gsub(/\//, "_")) ) }'

mol@mol:~

結果を取得したい:

_home_mol_Pulpit_test_1.jpg

ご協力ありがとうございました。

編集:

コマンドをテストするために「echo」を入力します。

$ find $PWD -name "*.jpg" | awk '{gsub("/", "_")} {system( "echo " mv $0 " " $0) }'
_home_mol_Pulpit_test_1.jpg _home_pic_Pulpit_test_1.jpg

mol@mol:~

結果を取得したい:

$ find $PWD -name "*.jpg" | awk '{gsub("/", "_")} {system( "echo " mv $0 " " $0) }'
/home/pic/Pulpit/test/1.jpg  _home_pic_Pulpit_test_1.jpg
4

1 に答える 1

30

文字列に複数の一致が含まれている場合、これは機能しません...これを試してください:

echo "/x/y/z/x" | awk '{ gsub("/", "_") ; system( "echo "  $0) }'

またはそれ以上(echoが他の何かのプレースホルダーでない場合):

echo "/x/y/z/x" | awk '{ gsub("/", "_") ; print $0 }'

あなたの場合、それを変更する前に値のコピーを作成したい:

echo "/x/y/z/x" | awk '{ c=$0; gsub("/", "_", c) ; system( "echo " $0 " " c )}'
于 2012-04-29T11:08:41.240 に答える