Диск SSD M2 -поврежденные сектора

Учитывая ваш комментарий о том, что вы хотите обновить файлы in this directory and other directories next to it., давайте предположим, что у вас есть каталог, в котором есть другие каталоги, в которых находятся файлы, которые вы хотите изменить. Вот как вы это сделаете после того, как cd -перейдет в этот каталог верхнего уровня:

find. -maxdepth 2 -mindepth 2 -exec awk -i inplace '{print} $1==8852{$1=9997; print}' {} +

В приведенном выше примере используется GNU awk для редактирования «на месте» и GNU find для +. Если у вас нет инструментов GNU, при условии, что ваши имена файлов не содержат символы новой строки:

tmp=$(mktemp)
while IFS= read -r file; do
    awk '{print} $1==8852{$1=9997; print}' "$file" > "$tmp" &&
    mv "$tmp" "$file"
done < <(find. -maxdepth 2 -mindepth 2) )
rm -f "$tmp"

Если вы не хотите изменять метку времени для файлов, не содержащих 8852, тогда:

tmp=$(mktemp)
while IFS= read -r file; do
    awk '$1==8852{f=1; exit} END{exit !f}' "$file" &&
    awk '{print} $1==8852{$1=9997; print}' "$file" > "$tmp" &&
    mv "$tmp" "$file"
done < <(find. -maxdepth 2 -mindepth 2) )
rm -f "$tmp"

0
02.09.2021, 14:32
0 ответов

Теги

Похожие вопросы