Find

通過 Linux 命令更新所有 Python 文件

  • November 13, 2018

在我的原始 Python 文件中,我有以下內容:

from official.utils.flags import _base

我需要將其更改為:

from utils.flags import _base

我的文件結構如下所示:

.
├── README.md
├── requirements.txt
├── setup.py
└── trainer
   ├── __init__.py
   ├── task.py
   ├── task_eager.py
   ├── dataset.py
   └── utils

我所有的 Python 文件都位於 utils 文件夾下。我試過:

find . -type f -exec sed -i -e "s/from official./from /g" {} +

但我看到創建了一堆新文件:

test.py             test.py.py          test.py.py.py           test.py.py.py.py        test.py.py.py.py.py     test.py.py.py.py.py.py
test.py-e           test.py.py-e            test.py.py.py-e         test.py.py.py.py-e      test.py.py.py.py.py-e       test.py.py.py.py.py.py-e

建議刪除,-e因為在這種情況下確實沒有必要。

此外,它看起來-e正在被-i選項吞噬,因為備份文件的後綴將如filename-e您的程式碼片段中所示。

如果您在find命令行中有 a -i-e(即忘記了兩個參數之間的空格)而不是您在此處發布的內容,也可能發生這種情況。

引用自:https://serverfault.com/questions/939762