次の検索コマンドがあります。私はPythonを使ってこれらのコマンドを呼び出して実行します。これらのコマンドを一度に実行する必要があるという要件があります。
検索コマンド
find /path/to/files/ -type f -mtime +3 -exec rm -f {} \;
find /path/to/files2 -type f -mtime +6 -exec rm -f {} \;
bashでこのように実行するとエラーが発生します。検索:パスは「find」式の前になければなりません。
find /path/to/files/ -type f -mtime +3 -exec rm -f {} \; find /path/to/files2 -type f -mtime +6 -exec rm -f {} \;
ただし、これを実行するとエラーは発生しません。
find /path/to/files/ -type f -mtime +3 -exec rm -f {} \; && find /path/to/files2 -type f -mtime +6 -exec rm -f {} \;
エラーが発生しない理由を知りたいです&&
。連続コマンドを実行する最良の方法は何ですかfind
?
私のような場合は、次のように実行する必要があります。私は次のことを行う解決策を知りたいのですが、提案にも開いています。
cmd1 = 'find ... \; '
cmd2 = 'find ... \; '
cmd3 = 'find ... \; '
# This utilises string concatenation
full_cmd = cmd1 + cmd2 + cmd3
# I need to run them in one call.
# It's hard (not impossible) to change this since it is a part of a bigger code base
python_func_which_runs_bash(full_cmd)
答え1
次のコマンドは&&
コマンドを実行し続けますが、2番目のコマンドは最初のコマンドが正常に終了した場合にのみ実行されます。 2番目のコマンドを無条件に実行するには、;
inを代わりに使用できます。&&
ご注意ください、脱出する \;
計算されません - 正確にエスケープされるので、シェルはいいえそれを接続詞として扱い、 に一般引数として渡しますfind
。
また見なさい: