Поиск и замена всех имен

Решение, которое я нашел, включает в себя программу под названием 'detach', написанную Анноном Инглорионом и загружаемую с его веб-сайта

. После компиляции ее можно использовать в сценарии следующим образом:

$ ./detach -p debug.pid openocd  # detach openocd
$ gdb                            # run gdb
$ kill -9 $(cat debug.pid)             # end openocd process
$ rm debug.pid                         # remove file containing process id

Эта первая строка создает новый процесс (запускающий openocd) и сохраняет идентификатор процесса в файле (debug.pid) для последующего использования. Это предотвращает проблемы с поиском pid, как указано в ответе Оливера. При выходе из следующей блокирующей программы (gdb) файл, хранящий pid, используется для непосредственного уничтожения отсоединенного процесса.

1
20.09.2016, 19:50
1 ответ

Это может быть более BASHy, чем возможно, но, возможно, это поможет в правильном направлении.

Короче говоря, найдите все папки с apple, измените сортировку так, чтобы

/tmp/apple/test/apple

не создавал проблем, когда первое "яблоко" меняется не по порядку. Затем передайте вывод в цикл while с функцией read, загружающей переменную, содержащую все папки, которые совпадают. Наконец, переместите папки в нужную структуру имен.

для каталогов, попробуйте

find ./ -regex '^.*apple' -type d | sort -r | while read badname ; do mv $badname ${badname/%apple/orange}; done

для имен файлов, (после очистки каталогов)

find ./ -regex '^. apple. ' -type f | sort -r | while read badname ; do mv $badname ${badname/apple/orange}; done

для содержимого файлов есть много других примеров,

Awk/Sed: Как сделать рекурсивный поиск/замену строки?

0
28.01.2020, 01:11

Теги

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