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

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

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

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

ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½ΠΎ систСма Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π’ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ xargs. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ со стандартного Π²Π²ΠΎΠ΄Π° ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΡ… Π² список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

find ~ -type f -name 'foo*' -print | xargs 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

Π—Π΄Π΅ΡΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find пСрСдаСтся ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ xargs, которая, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, конструируСт список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls ΠΈ выполняСт Π΅Π΅.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ большоС число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠ½ΠΎ Π½Π΅ бСсконСчно. НС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ конструирования Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, которая окаТСтся слишком Π²Π΅Π»ΠΈΠΊΠ° для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Когда Π΄Π»ΠΈΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ максимально допустимый Ρ€Π°Π·ΠΌΠ΅Ρ€, xargs Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ с максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ процСсс, ΠΏΠΎΠΊΠ° Π½Π΅ исчСрпаСт всС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ со стандартного Π²Π²ΠΎΠ΄Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ xargs с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ --show-limits.

ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² с Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ

Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ систСмы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ (ΠΈ Π΄Π°ΠΆΠ΅ символы ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки). Π­Ρ‚ΠΎ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ xargs, ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… списки Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ°ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слова, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ find ΠΈ xarg ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС раздСлитСля Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² пустой символ (null character). Π’ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ASCII пустой символ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ символ с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ASCII ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ символ с ΠΊΠΎΠ΄ΠΎΠΌ 32). Команда find ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ -print0, которая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… пустым символом, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° xargs ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --null, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… пустым символом. НапримСр:

find ~ -iname '*.jpg' -print0 | xargs --null ls -l

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ², Π΄Π°ΠΆΠ΅ содСрТащих ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹.

ВозвращаСмся Π² пСсочницу

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ find для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… практичСских (ΠΏΠΎΡ‡Ρ‚ΠΈ) Π·Π°Π΄Π°Ρ‡. Π‘Π½Π°Ρ‡Π°Π»Π° создадим пСсочницу с мноТСством Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²:

[[email protected] ~]$ mkdir -p playground/dir-{00{1..9},0{10..99},100}

[[email protected] ~]$ touch playground/dir-{00{1..9},0{10..99},100}/file-{A..Z}

Какая ΠΌΠΎΡ‰ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки! Π­Ρ‚ΠΈ Π΄Π²Π΅ строки ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ playground, содСрТащий 100 ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ 26 пустых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅-ΠΊΠ° Ρ‚ΠΎ ΠΆΠ΅ самоС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² графичСском интСрфСйсС!

Π­Ρ‚ΠΎ Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²ΠΎ ΠΌΡ‹ сотворили с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (mkdir) ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° подстановки Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ (Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки) ΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ touch. ОбъСдинив ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ mkdir с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -p (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ mkdir ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ) с подстановкой Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок, ΠΌΡ‹ смогли ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ 100 ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Команда touch ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обновлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ послСднСго измСнСния Ρ„Π°ΠΉΠ»ΠΎΠ². Но Ссли ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΉ имя Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π°, ΠΎΠ½Π° создаст пустой Ρ„Π°ΠΉΠ».

Π’ нашСй пСсочницС ΠΌΡ‹ создали 100 Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΈΠΌΠ΅Π½Π΅ΠΌ file-A. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΈΡ…:

[[email protected] ~]$ find playground -type f -name 'file-A'

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ls, find Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² нСсортированном порядкС. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ опрСдСляСтся ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ устройства хранСния. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ 100 Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΈΠΌΠ΅Π½Π΅ΠΌ file-A:

[[email protected] ~]$ find playground -type f -name 'file-A' | wc -l

100

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ поиск Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΡ… послСднСго измСнСния. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² хронологичСском порядкС. Для этого сначала создадим эталонный Ρ„Π°ΠΉΠ», врСмя послСднСго измСнСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для сравнСния:

[[email protected] ~]$ touch playground/timestamp

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст пустой Ρ„Π°ΠΉΠ» timestamp ΠΈ установит врСмя Π΅Π³ΠΎ послСднСго измСнСния Ρ€Π°Π²Π½Ρ‹ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² этом, использовав Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, stat, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ своСго Ρ€ΠΎΠ΄Π° Ρ„ΠΎΡ€ΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ls. Команда stat Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„Π°ΠΉΠ»Π΅ ΠΈ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ систСма:

[[email protected] ~]$ stat playground/timestamp

Β Β File: `playground/timestamp'

Β Β Size: 0Β Β Β Β Β Β Β Β Β Β Blocks: 0Β Β Β Β Β Β Β IO Block: 4096 regular empty file

Device: 803h/2051d Inode: 14265061 Links: 1

Access: (0644/-rw-r--r--)Β Β Uid: ( 1001/ me)Β Β Β Gid: ( 1001/ me)

Access: 2012-10-08 15:15:39.000000000 -0400

Modify: 2012-10-08 15:15:39.000000000 -0400

Change: 2012-10-08 15:15:39.000000000 -0400

Если ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ touch ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ stat, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ врСмя послСднСго Π΅Π³ΠΎ измСнСния обновилось:

[[email protected] ~]$ touch playground/timestamp

[[email protected] ~]$ stat playground/timestamp

Β Β File: `playground/timestamp'

Β Β Size: 0Β Β Β Β Β Β Β Β Β Β Blocks: 0Β Β Β Β Β Β Β IO Block: 4096 regular empty file

Device: 803h/2051d Inode: 14265061 Links: 1

Access: (0644/-rw-r--r--)Β Β Uid: ( 1001/ me)Β Β Β Gid: ( 1001/ me)

Access: 2012-10-08 15:23:33.000000000 -0400

Modify: 2012-10-08 15:23:33.000000000 -0400

Change: 2012-10-08 15:23:33.000000000 -0400

Π”Π°Π»Π΅Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ find, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ врСмя послСднСго измСнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² нашСй пСсочницС:

[[email protected] ~]$ find playground -type f -name 'file-B' -exec touch '{}' ';'

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ врСмя послСднСго измСнСния для всСх Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΈΠΌΠ΅Π½Π΅ΠΌ file-B, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² пСсочницС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΉΠ΄Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ find ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, сравнив всС Ρ„Π°ΠΉΠ»Ρ‹ с эталонным Ρ„Π°ΠΉΠ»ΠΎΠΌ timestamp:

[[email protected] ~]$ find playground -type f -newer playground/timestamp

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ всС 100 Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΈΠΌΠ΅Π½Π΅ΠΌ file-B. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π° touch ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ ΠΊΠΎ всСм Ρ„Π°ΠΉΠ»ΠΌ file-B Π² пСсочницС послС обновлСния Ρ„Π°ΠΉΠ»Π° timestamp, ΠΎΠ½ΠΈ оказались Β«Π½ΠΎΠ²Π΅Π΅Β», Ρ‡Π΅ΠΌ timestamp, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π±Ρ‹Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ -newer.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ вСрнСмся ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΏΠ»ΠΎΡ…ΠΈΡ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ²ΡˆΠ΅ΠΉΡΡ Π²Ρ‹ΡˆΠ΅, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π΅Π΅ ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ playground:

[[email protected] ~]$ find playground \( -type f -not -perm 0600 \) -or \( -type d -not -perm 0700 \)

199

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС 100 ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ 2600 Ρ„Π°ΠΉΠ»ΠΎΠ², хранящихся Π² playground (Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°ΠΉΠ» timestamp ΠΈ сам ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ playground, всСго 2702 элСмСнта), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ соотвСтствуСт Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Β«ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΒ». Π’ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ Π½ΠΎΠ²Ρ‹ΠΌΠΈ знаниями ΠΎΠ± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈ опСрациях, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для примСнСния Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ Π² пСсочницС:

[[email protected] ~]$ find playground \( -type f -not -perm 0600 -exec chmod 0600

'{}' ';' \) -or \( -type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° повсСднСвном ΠΎΠΏΡ‹Ρ‚Π΅, слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ввСсти Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€” ΠΎΠ΄Π½Ρƒ для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² ΠΈ ΠΎΠ΄Π½Ρƒ для Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Π΅ΠΌ ΠΎΠ΄Π½Ρƒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π½ΠΎ Π·Π½Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, β€” ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ практичСских Π·Π°Π΄Π°Ρ‡.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

НаконСц ΠΌΡ‹ Π΄ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ поиска. Они ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² выраТСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find наряду с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ ΠΈ опСрациями. Π’ Ρ‚Π°Π±Π». 17.8 пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.