Программа readlink предназначена для считывания расположения символических ссылок. Если у вас есть обычные файлы, возможно, для этой работы есть лучшие инструменты. Для поиска файлов мне нравится использовать команду find
. Похоже, вы можете выполнить все упражнение за один шаг, используя find:
find. -type f -exec touch {} -d "$(date -d yesterday)" \;
find.
:поиск в текущем каталоге .
и во всем, что находится под ним -type f
:искать только обычные файлы -exec
:указать find запускать следующую команду для каждого найденного объекта touch {} -d "$(date -d yesterday)" \;
:команду, которую вы хотите выполнить для каждого файла. «{}» — это заполнитель для вывода find
и \; обозначает конец оператора -exec
Обычно нужно сохранять необходимую информацию из всех строк в переменные awk, а затем распечатывать данные в последней строке блока. Таким образом, для примера у вас будет что-то вроде этого (Я не закодировал случай задержки хоста, так как данные примера не показывают это ).
nmap -sP 192.168.1.0/24 -n --max-rtt-timeout 50ms |
awk '/Nmap scan report for / {ip=$5}
/Host is up/ { latency=$4 ; sub(/(/,"",latency) }
/MAC Address: / { mac=$3; print(ip "," mac "," latency) ; ip=mac=latency="unknown" }
BEGIN { print "IP,MAC,RTT"}
Очистка переменных в последней строке блока может потребоваться или не потребоваться, в зависимости от того, всегда ли данные полны или нет. Если переменных много, рассмотрите возможность использования массива, а не скалярных переменных, таких как ip
, mac
, latency
, так как все они могут быть очищены одним удалением.