<Попередній | зміст | Наступна>
Підвищення ефективності
Коли Exec- Якщо використовується дія, він запускає новий екземпляр вказаної команди щоразу, коли буде знайдено відповідний файл. Іноді ми можемо віддати перевагу об’єднати всі результати пошуку та запустити один екземпляр команди. Наприклад, замість виконання таких команд:
ls -l file1
ls -l file2
ми можемо віддати перевагу виконувати їх таким чином:
ls -l файл1 файл2
таким чином команда виконується лише один раз, а не кілька разів. Ми можемо це зробити двома способами. Традиційний спосіб, за допомогою зовнішньої команди ксарг та альтернативним способом, використовуючи нову функцію в знаходити себе. Спочатку ми поговоримо про альтернативний шлях.
Змінюючи кінцевий символ крапки з комою на знак плюс, ми активуємо здатність знаходити щоб об’єднати результати пошуку в список аргументів для одноразового виконання потрібної команди. Повертаючись до нашого прикладу, це:
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'
find ~ -type f -name 'foo*' -exec ls -l '{}' ';'
-rwxr-xr-x 1 мене
-rw-r--r-- 1 мене
-rwxr-xr-x 1 мене
-rw-r--r-- 1 мене
я 224 2007-10-29 18:44 /home/me/bin/foo
я 224 2007-10-29 18:44 /home/me/bin/foo
me
me
0 2016-09-19 12:53 /home/me/foo.txt
0 2016-09-19 12:53 /home/me/foo.txt
виконає ls щоразу, коли буде знайдено відповідний файл. Змінивши команду на:
знайти ~ -type f -name 'foo*' -exec ls -l '{}' +
знайти ~ -type f -name 'foo*' -exec ls -l '{}' +
-rwxr-xr-x 1 мене
-rw-r--r-- 1 мене
-rwxr-xr-x 1 мене
-rw-r--r-- 1 мене
я 224 2007-10-29 18:44 /home/me/bin/foo
я 224 2007-10-29 18:44 /home/me/bin/foo
me
me
0 2016-09-19 12:53 /home/me/foo.txt
0 2016-09-19 12:53 /home/me/foo.txt
ми отримуємо ті самі результати, але системі потрібно лише виконати ls команда один раз.