Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор Шоттс Уильям

Π’Π°Π±Π»ΠΈΡ†Π° 17.5. ДСйствиС логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² -and/-or ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния1

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2...

Π˜ΡΡ‚ΠΈΠ½Π°

-and

ВсСгда вычисляСтся

Π›ΠΎΠΆΡŒ

-and

Никогда Π½Π΅ вычисляСтся

Π˜ΡΡ‚ΠΈΠ½Π°

-or

Никогда Π½Π΅ вычисляСтся

Π›ΠΎΠΆΡŒ

-or

ВсСгда вычисляСтся

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ происходит? Π­Ρ‚ΠΎ сдСлано для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ -and. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -and Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ истинным, Ссли Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 Π²Π΅Ρ€Π½Π΅Ρ‚ Π»ΠΎΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, поэтому Π½Π΅Ρ‚ смысла Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2. Аналогично, Ссли имССтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -or Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 Π²Π΅Ρ€Π½Π΅Ρ‚ истинный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½Π΅Ρ‚ смысла Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ извСстно, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1 -or Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2 являСтся истинным.

Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚Π°ΠΊΠΎΠΉ порядок вычислСний ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния. Но ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ для нас? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ для управлСния Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рассказываСтся Π΄Π°Π»Π΅Π΅.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия Π² процСссС поиска! Π˜ΠΌΠ΅Ρ‚ΡŒ список с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find ΡƒΠΆΠ΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с элСмСнтами списка. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, find позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ наши ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… поиска.

ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

БущСствуСт мноТСство ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ нСсколько способов примСнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, опрСдСляСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Для Π½Π°Ρ‡Π°Π»Π° взглянитС Π½Π° Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ‚Π°Π±Π». 17.6.

Π’Π°Π±Π»ΠΈΡ†Π° 17.6. ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ find

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ

ОписаниС

-delete

УдаляСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

-ls

ДСйствуСт эквивалСнтно ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ls -dils Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выводится Π² стандартный Π²Ρ‹Π²ΠΎΠ΄

-print

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Π² стандартный Π²Ρ‹Π²ΠΎΠ΄. Π­Ρ‚Π° опСрация выполняСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° никакая другая

-quit

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ послС обнаруТСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ совпадСния

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС, Ρ‡Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ здСсь. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° страницС справочного руководства (man) для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find.

Π’ нашСм ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

find ~

Она Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², хранящихся Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Бписок выводится просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² отсутствиС Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ прСдполагаСтся опСрация -print. Π’ΠΎ Π΅ΡΡ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

find ~ -print

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ find ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для удалСния Ρ„Π°ΠΉΠ»ΠΎΠ², ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ критСриям. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡƒΠ΄Π°Π»ΠΈΡ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .BAK (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²):

find ~ -type f -name '*.BAK' -delete

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°ΠΉΠ΄Π΅Ρ‚ Π² домашнСм ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ (ΠΈ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…) ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ всС Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .BAK ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΈΡ….

Π’ΠΠ˜ΠœΠΠΠ˜Π•

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ -delete слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с особыми прСдостороТностями. ВсСгда ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ провСряйтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, подставив ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ -print вмСсто -delete, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ лишнСго.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

find ~ -type f -name '*.BAK' -print

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡ‰Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ (-type f) с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .BAK (-name '*.BAK') ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΊ Π½ΠΈΠΌ Π² стандартный Π²Ρ‹Π²ΠΎΠ΄ (-print). Однако Ρ‚Π°ΠΊΠΎΠΉ порядок Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ опрСдСляСтся логичСскими ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ ΠΈ опСрациями. Как Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ ΠΈ опСрациями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ подразумСваСтся ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ -and. Π’Ρƒ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Β­Π΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎΒ Β Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹:

find ~ -type f -and -name '*.BAK' -and -print

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, имСя ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, взглянитС Π½Π° Ρ‚Π°Π±Π». 17.7, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° порядок выполнСния.

Π’Π°Π±Π»ΠΈΡ†Π° 17.7. ВлияниС логичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°/опСрация

ВыполняСтся, ΠΊΠΎΠ³Π΄Π°...

-print

-type f and -name '*.BAK' истинно

-name '*.BAK'

-type f истинно

-type f

ВсСгда выполняСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это пСрвая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°/опСрация Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ -and

Π’Π°ΠΊ ΠΊΠ°ΠΊ логичСскиС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ ΠΈ опСрациями ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΡ… выполнСния, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΈΡ… порядок слСдования ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. НапримСр, Ссли ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, поставив ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ -print Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ вСсти сСбя ΠΈΠ½Π°Ρ‡Π΅:

find ~ -print -and -type f -and -name '*.BAK'

Π­Ρ‚Π° вСрсия ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (опСрация -print всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, опрСдСляСмыС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ

Помимо ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Β­ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ с этой Ρ†Π΅Π»ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опСрация -exec, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

-exec ΠΊΠΎΠΌΠ°Π½Π΄Π° {} ;

Π³Π΄Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° β€” это имя ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, {} β€” символичСскоС прСдставлСниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой β€” ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΠΌΠ°Π½Β­Π΄Ρ‹. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт использованиС -exec для получСния эффСкта, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ -delete, ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π²ΡˆΠ΅ΠΉΡΡ Π²Ρ‹ΡˆΠ΅:

-exec rm '{}' ';'

И снова, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ. Если Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ -exec ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ -ok, ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ запрос:

find ~ -type f -name 'foo*' -ok ls -l '{}' ';'

< ls ... /home/me/bin/foo > ? y

-rwxr-xr-x 1 meΒ Β Β me 224 2011-10-29 18:44 /home/me/bin/foo

< ls ... /home/me/foo.txt > ? y

-rw-r--r-- 1 meΒ Β Β meΒ Β Β 0 2012-09-19 12:53 /home/me/foo.txt

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡ‰Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ со строки foo, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls -l. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ -ok Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls.

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ эффСктивности

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° обнаруТиваСтся Ρ„Π°ΠΉΠ», ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ критСриям, опСрация -exec запускаСт Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Но ΠΈΠ½ΠΎΠ³Π΄Π° ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ всС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ СдинствСнный экзСмпляр ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. НапримСр, вмСсто ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ:

ls -l Ρ„Π°ΠΉΠ»1

ls -l Ρ„Π°ΠΉΠ»2

ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ls -l Ρ„Π°ΠΉΠ»1 Ρ„Π°ΠΉΠ»2

Π—Π΄Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° Π½Π΅ нСсколько. БущСствуСт Π΄Π²Π° способа Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ этого: Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ, с использованиСм внСшнСй ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ xargs, ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ, с использованиСм Π½ΠΎΠ²ΠΎΠΉ возмоТности Π² самой ΠΊΠΎΠΌΠ°Π½Π΄Π΅ find. ΠžΠ±ΡΡƒΠ΄ΠΈΠΌ сначала Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ.

Если Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ символ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой Π·Π½Π°ΠΊΠΎΠΌ «плюс», Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ find активируСтся функция объСдинСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для Π²Ρ‹Π·ΠΎΠ²Π° СдинствСнного экзСмпляра Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ВСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. Команда:

find ~ -type f -name 'foo*' -exec ls -l '{}' ';'

-rwxr-xr-x 1 meΒ Β Β me 224 2011-10-29 18:44 /home/me/bin/foo

-rw-r--r-- 1 meΒ Β Β meΒ Β Β 0 2012-09-19 12:53 /home/me/foo.txt

Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ls для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ИзмСнив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

find ~ -type f -name 'foo*' -exec ls -l '{}' +

-rwxr-xr-x 1 meΒ Β Β me 224 2011-10-29 18:44 /home/me/bin/foo