Как точно сопоставить значение $TARGET_NAME из вывода find /tmp -type l -exec ls -l?
$ find /tmp -type l -exec ls -l 2>/dev/null {} +
lrwxrwxrwx 1 root root 24 Mar 18 12:41 /tmp/test/link -> /usr/admin/Collect_tests
lrwxrwxrwx 1 root root 43 Mar 18 12:41 /tmp/test/link1 -> /usr/admin/Collect_tests/[email protected]
lrwxrwxrwx 1 root root 68 Mar 18 12:41 /tmp/test/link2 -> /usr/admin/Collect_tests/[email protected]/Upload_Shema@@@.DATA.com
lrwxrwxrwx 1 root root 100 Mar 18 12:42 /tmp/test/link3 -> /usr/admin/Collect_tests/[email protected]/Upload_Shema@@@.DATA.com/List.files.emails.dummy*Printed
lrwxrwxrwx 1 root root 92 Mar 18 12:42 /tmp/test/link4 -> /usr/admin/Collect_tests/[email protected]/Upload_Shema@@@.DATA.com/[email protected]
Примеры значений
[email protected]
TARGET_NAME=Upload_Shema@@@.DATA.com
TARGET_NAME=List.files.emails.dummy*Printed
Цель: вывести: "имя ссылки" и "ПУТЬ" (последнее поле) только в том случае, если $TARGET_NAME точно соответствует слову в последнем поле.
Пример (когда мы хотим точного совпадения - тогда TARGET_NAME=Upload_Shema@@@.DATA.com):
Результаты будут отображаться следующим образом
/tmp/test/link2 /usr/admin/Collect_tests/[email protected]/Upload_Shema@@@.DATA.com
/tmp/test/link3 /usr/admin/Collect_tests/[email protected]/Upload_Shema@@@.DATA.com/List.files.emails.dummy*Printed
/tmp/test/link4 /usr/admin/Collect_tests/[email protected]/Upload_Shema@@@.DATA.com/[email protected]
Есть несколько условий:
1) Нужно сопоставить только последнее поле (из вывода ls -l
)
Пример
/usr/admin/Collect_tests/[email protected]
2) Значение $TARGET_NAME должно соответствовать всему слову
Пример полного соответствия (в то время как [email protected]):
/usr/admin/Collect_tests/[email protected]
Пример неполного совпадения:
/usr/admin/Collect_tests/[email protected]
3) Слева от $TARGET_NAME должна быть обратная косая черта ("/"), а справа от $TARGET_NAME должна быть обратная косая черта или конец строки.
4) Необходимо экранировать специальные символы: " / " , " @ " . " * " и т. д.
5) Код будет частью сценария ksh (и может быть реализован с помощью однострочника Perl или AWK). или кш и т.п.. )
Пример
find /tmp -type l -exec ls -l 2>/dev/null {} + | < Perl one liner .............. >
find
- person Gilles Quenot   schedule 18.03.2013find -type l -printf '%l\n'
это лучшее начало. - person Gilles Quenot   schedule 18.03.2013