find execはコマンドエイリアスと機能しませんか?

find execはコマンドエイリアスと機能しませんか?

findmacOSでコマンドエイリアスを使用して-exec操作を実行しようとしています.bash_profile。このfindコマンドは以下を表示します。

find: [alias cmd]: No such file or directory

私が使うとき

find ./ -iname *.doc -exec sha256 {} \;`

どこalias sha256="shasum -a 256"

エイリアスなしでコマンドを実行すると正常に動作します。

定義されたコマンド別名にアクセスすることは不可能でなければなりませんかfind、それともこれがバグですかfind

ベストアンサー1

オプションには純粋な実行可能ファイルが-exec必要です。-esはシェル機能なので、シェルに存在する場合にのみ存在します。findalias

-execrunを実行して、シェルからすべてのコマンドを実行できますbash -c command。ただし、エイリアスを許可するには、シェルを対話的に実行する必要があります。

を実行して対話を欺くことができますが、bash -ic sha256エイリアス定義をその中に入れたので、インタラクティブシェル.bash_profileだけでなく「ログインシェル」にもだまされなければなりません。ファイルはいわゆる「ログイン」を介してのみ読み取ることができるからです。シェル" 。つまり、を実行する必要がありますbash -lic sha256。しかし、これは遅くなり、セッションログが汚染されます。

したがって、エイリアス.bashrcbash -ibash -li

これにより、コマンド全体が次のようになります。

find ./ -iname *.doc -exec bash -ic 'sha256 "$1"' -- {} \;

エイリアス定義を維持する必要がある場合、.bash_profileコマンドは次のようになります。

find ./ -iname *.doc -exec bash -lic 'sha256 "$1"' -- {} \;

おすすめ記事