如何在一行中执行多个查找命令?

如何在一行中执行多个查找命令?

我有以下查找命令。我将使用 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 /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

带有 的命令&&会连续运行这些命令,但是第二个命令仅在第一个命令成功退出时运行。如果您希望第二个命令无条件运行,您可以使用;in 代替。&&

请注意,逃脱了 \;不算数 - 它被精确地转义,因此 shell将其视为连词,并将其作为普通参数传递给find.

也可以看看:

相关内容