Предполагая, что вы просто хотите найти любой файл, чье имя совпадает с *~
или .*~
(, это обычно файлы резервных копий, оставленные редактором ), тогда этот единственный вызов find
сделает это за вас :
find /var/www/html/mypath/ -type f \( -name '*~' -o -name '.*~' \) -print
Вы можете вставить туда -maxdepth 6
, если считаете, что это имеет смысл:
find /var/www/html/mypath/ -maxdepth 6 -type f \( -name '*~' -o -name '.*~' \) -print
Чтобы удалить найденные файлы, просто добавьте -delete
в конец команды.
Если оболочка не может расширить шаблон подстановки имен файлов в список имен, он сохраняется как нерасширенный шаблон. Вот почему вы получаете результат, который получаете с помощью своего кода.
Предположим, что $arg2
установлено на host1
и $arg3
установлено на 10.10.10.10
, тогда обе ваши команды sed
удалят host1
из вывода.
Проблема в том, что вы сопоставляете 192.168.10.*
, .*
в конце будет соответствовать чему угодно до конца строки и заменит его на 10.10.10.10
.
Попробуйте:
arg2=host1
arg3=10.10.10.10
sed "/${arg2}/ s/192\.168\.10\.[0-9]\+/${arg3}/" /path/to/file