1

私は一生これを手に入れることができません。失敗の例。最後の行にsedが追加されます。これは、最終的な目標です。

find -maxdepth 1 -name "*.sql" -exec "mysql -D ootp < {}" \;
find -maxdepth 1 -name "*.sql" -exec "mysql -D ootp << {}" \;
find . -maxdepth 1 -name \"*.sql\" -exec /usr/bin/mysql -D ootp << sed -e 's/ , );/1,1);/g' {}

何が得られますか?

4

3 に答える 3

2

上記のすべてを次のバリアントのいずれかに書き直します。

find -maxdepth 1 -name '*.sql' -exec sed -e 's/ , );/1,1);/g' '{}' + \
    | | mysql -D ootp

find -maxdepth 1 -name '*.sql' -print0 \; \
    | | xargs -0 sed -e 's/ , );/1,1);/g' \
    | | mysql -D ootp

find -maxdepth 1 -name '*.sql' -exec cat '{}' \; \
    | | sed -e 's/ , );/1,1);/g' \
    | | mysql -D ootp

find -maxdepth 1 -name '*.sql' -exec sed -e 's/ , );/1,1);/g' '{}' \; \
    | | mysql -D ootp

最初のバリアントは、GNU findutils 4.2.12、SRV4 派生find、またはその他の POSIX 互換findを必要とし、最も効率的ですが、すべてのfind実装で機能するとは限りません (特に、BSD にfindはその機能が欠けていると思います)。

于 2009-09-03T21:39:28.560 に答える
0

<< は「ヒア ドキュメント」ですが、ファイル名やストリームとして使用しています。

あなたが欲しいように聞こえます

探す 。-maxdepth 1 -name '*.sql' -exec "sed -e 's/ , );/1,1);/g' '{}' | /usr/bin/mysql -D ootp" \;

-maxdepth 1 を使用している場合は、おそらく実行できます

for i in *.sql ; do 
  sed -e 's/ , );/1,1);/g' "$i" | /usr/bin/mysql -D ootp
done
于 2009-09-03T21:45:43.647 に答える
0

私はこのようなことを試してみましたが、うまくいきました:

find -maxdepth 1 -name "*.sql" -exec sh -c "mysql -D ootp < {}" \;
于 2017-11-23T01:29:26.687 に答える