Bash
如何在一行中執行多個查找命令?
我有以下查找命令。我將使用 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: paths must before expression: `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)
帶有 的
&&
命令會連續執行命令,但是第二個命令僅在第一個命令成功退出時執行。如果您希望第二個命令無條件執行,您可以使用;
代替。&&
請注意,轉義
\;
不計算在內 - 它被精確轉義,因此 shell不會將其視為連詞,而是將其作為普通參數傳遞給find
.也可以看看: