Unix find -exec:次の動作が異なるのはなぜですか?

ダン・リー

以下は意図したとおりに機能します。

$ find . -name .git -exec dirname '{}' \;
./google/guava
./JetBrains/intellij-community
./zsh-users/zsh-syntax-highlighting

ただし、以下はドットのみを返します。

$ find . -name .git -exec echo "$(dirname '{}')" \;
.
.
.

それはなぜですか$(dirname '{}')find -execコマンドどのように使用できますか?

私はfindGNUではなくUNIX (特に、OS XとFreeBSD)について質問していることに注意してください

ピスタチオ

行動の違いの理由

シェルがbeforefindを評価している$(dirname)ため、このコマンドが実行されます。

find . -name .git -exec echo . ;

これを行う他の方法

  • もちろん、自分で別のシェルを呼び出すことで、find内でシェル拡張を使用できます(または、必要なシェルをshebangとして使用してスクリプトを呼び出すこともできます)。
    言い換えると:

    find . -name .git -exec sh -c 'dirname {}' \;
    
  • なしのソリューションdirname(POSIX、より高速、呼び出すサブプロセスが1つ少ない):

    find . -name .git -exec sh -c 'path={}; echo "${path%/*}" ' \;
    
  • コーミング/ U / tripleeeの答えを見つけるの最適化で(私を彼にないupvote):

    find . -name .git -exec sh -c 'for f; do echo "${f%/*}"; done' _ {} \+
    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spark 2.3.x / 2.0.xで `unix_timestamp`の動作が異なるのはなぜですか?

分類Dev

GNU find-execdirコマンドがBSDfindとは異なる動作をするのはなぜですか?

分類Dev

Python-findメソッドとindexメソッドの動作が異なるのはなぜですか?

分類Dev

C ++ find関数と一緒に使用すると、イテレータの動作が異なるのはなぜですか?

分類Dev

Pandas整数の `dtypes`がUnixとWindowsで同じように動作しないのはなぜですか?

分類Dev

'find -exec cmd {} +'が '{} +'で終わる必要があるのはなぜですか?

分類Dev

find exec grep> fileが無限ループになるのはなぜですか?

分類Dev

find and exec mvがすべてのファイルを移動しないのはなぜですか?

分類Dev

同じvsnprintfコードがWindows(MSVC)とUnix(Clang)で異なる出力をするのはなぜですか

分類Dev

Pythonのサブプロセス 'popenがUNIXとWindowsでそれほど異なるのはなぜですか?

分類Dev

wcはUnixとLinuxで異なる動作をします

分類Dev

Unixが「自立」しているのはなぜですか?

分類Dev

find -execが正しく機能しないのはなぜですか?

分類Dev

find -exec mv {} ./target/ +が機能しないのはなぜですか?

分類Dev

find -execが正しく機能しないのはなぜですか?

分類Dev

findが '-exec cp {} dir +'を受け入れないのはなぜですか?

分類Dev

find -execが一部の位置で{}のみを受け入れるのはなぜですか?

分類Dev

Unix APIがないのはなぜですか?

分類Dev

find:-exec vs xargs(別名「find | xargsbasename」が壊れているのはなぜですか?)

分類Dev

find()とposition()の述語が異なるタイプを必要とするのはなぜですか?

分類Dev

「find.-print0 | xargs -r0du-chx」と「du-chx」の結果が異なるのはなぜですか。

分類Dev

find_packagesの動作がpipパッケージのインポートに依存するのはなぜですか?

分類Dev

WindowsでUnixの「find」コマンドに相当しますか?

分類Dev

Unix / TerminalがRより速いのはなぜですか?

分類Dev

この変換されたジャクソンの時刻が予想されるUnixの時刻と異なるのはなぜですか?

分類Dev

dos2unixがstderrに出力するのはなぜですか?

分類Dev

AF_UNIXでsocket()があるのに、なぜsocketpair()が必要なのですか?

分類Dev

Ctrl-D(Unix)とCtrl-Z(Windows)の異なる動作

分類Dev

findと同じシェルスクリプトで動作しないのはなぜですか?

Related 関連記事

  1. 1

    Spark 2.3.x / 2.0.xで `unix_timestamp`の動作が異なるのはなぜですか?

  2. 2

    GNU find-execdirコマンドがBSDfindとは異なる動作をするのはなぜですか?

  3. 3

    Python-findメソッドとindexメソッドの動作が異なるのはなぜですか?

  4. 4

    C ++ find関数と一緒に使用すると、イテレータの動作が異なるのはなぜですか?

  5. 5

    Pandas整数の `dtypes`がUnixとWindowsで同じように動作しないのはなぜですか?

  6. 6

    'find -exec cmd {} +'が '{} +'で終わる必要があるのはなぜですか?

  7. 7

    find exec grep> fileが無限ループになるのはなぜですか?

  8. 8

    find and exec mvがすべてのファイルを移動しないのはなぜですか?

  9. 9

    同じvsnprintfコードがWindows(MSVC)とUnix(Clang)で異なる出力をするのはなぜですか

  10. 10

    Pythonのサブプロセス 'popenがUNIXとWindowsでそれほど異なるのはなぜですか?

  11. 11

    wcはUnixとLinuxで異なる動作をします

  12. 12

    Unixが「自立」しているのはなぜですか?

  13. 13

    find -execが正しく機能しないのはなぜですか?

  14. 14

    find -exec mv {} ./target/ +が機能しないのはなぜですか?

  15. 15

    find -execが正しく機能しないのはなぜですか?

  16. 16

    findが '-exec cp {} dir +'を受け入れないのはなぜですか?

  17. 17

    find -execが一部の位置で{}のみを受け入れるのはなぜですか?

  18. 18

    Unix APIがないのはなぜですか?

  19. 19

    find:-exec vs xargs(別名「find | xargsbasename」が壊れているのはなぜですか?)

  20. 20

    find()とposition()の述語が異なるタイプを必要とするのはなぜですか?

  21. 21

    「find.-print0 | xargs -r0du-chx」と「du-chx」の結果が異なるのはなぜですか。

  22. 22

    find_packagesの動作がpipパッケージのインポートに依存するのはなぜですか?

  23. 23

    WindowsでUnixの「find」コマンドに相当しますか?

  24. 24

    Unix / TerminalがRより速いのはなぜですか?

  25. 25

    この変換されたジャクソンの時刻が予想されるUnixの時刻と異なるのはなぜですか?

  26. 26

    dos2unixがstderrに出力するのはなぜですか?

  27. 27

    AF_UNIXでsocket()があるのに、なぜsocketpair()が必要なのですか?

  28. 28

    Ctrl-D(Unix)とCtrl-Z(Windows)の異なる動作

  29. 29

    findと同じシェルスクリプトで動作しないのはなぜですか?

ホットタグ

アーカイブ