我有以下查找命令。我将使用 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
.
也可以看看: