我时不时地必须终止一个 for 循环,该循环会在数百个目录中查找某些内容,但我还没有找到一种方法来使用单个命令来完成此操作。每次我这样做时都会跳过该目录并移动到下一个目录,直到遍历完所有目录。如何仅用一个命令来停止整个事情?
例子:
for index in $(ls -1 /path/to/direcorties)
do
find $index -name some_file.gz | awk -F/ '{print $2}' >> /other/path/file.txt
done
如果我必须杀死这一切,它会跳过它所在的目录并移动到下一个,这意味着我必须杀死列表中每个目录的新 PID,直到它遍历完所有目录。
答案1
除了建议您将“ls 解析”重新组织为单个:
find /path/to/directories -name ...
...这将解决几个问题(其中一个是目录中带有空格;另一个是让 Control-C 杀死主进程),我对像这样终止交互式 shell 进程的建议是挂起它们然后终止它们,方法是:Control-Z其次是kill %