1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482
|
.\" -*- nroff -*-
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\" This file is distributed under the same license as original manpage
.\" Copyright of the original manpage:
.\" Copyright © 1990-94,2000,2003-10 Free Software Foundation, Inc. (GPL-3+)
.\" Copyright © of Polish translation:
.\" Przemek Borys (PTM) <pborys@dione.ids.pl>, 1999.
.\" Michał Kułach <michal.kulach@gmail.com>, 2012.
.TH FIND 1
.SH NAZWA
find \- szuka plików w hierarchii katalogowej
.SH SKŁADNIA
\fBfind\fP [\fB\-H\fP] [\fB\-L\fP] [\fB\-P\fP] [\fB\-D\fP \fIopcje\-debugowania\fP]
[\fB\-O\fP\fIpoziom\fP] [\fIścieżka\fP...] [\fIwyrażenie\fP]
.SH OPIS
Ta strona podręcznika man opisuje wersję GNU programu \fBfind\fP. GNU \fBfind\fP
przeszukuje drzewo katalogowe, zakorzenione w każdej z podanych nazw
plików. Wykonuje przy tym podane wyrażenie od lewej do prawej, zgodnie z
zasadami priorytetów (rozdział OPERATORY), aż do ustalenia wyniku (lewa
strona jest fałszywa dla operacji \fIand\fP, a prawdziwa dla \fIor\fP), co
powoduje przejście do następnej nazwy pliku.
.PP
W przypadku używania \fBfind\fP w środowisku, w którym istotne jest
bezpieczeństwo (np. przy przeszukiwaniu katalogów, które są zapisywalne dla
innych użytkowników), należy zapoznać się z rozdziałem "Security
Considerations" w dokumentacji findutils, pod nazwą \fBFinding
Files\fP. Dokument ten (w języku angielskim) jest bardziej szczegółowy i
opisowy niż niniejsza strona podręcznika systemowego, więc może okazać się
przydatniejszym źródłem informacji.
.SH OPCJE
Opcje \fB\-H\fP, \fB\-L\fP i \fB\-P\fP kontrolują sposób traktowania dowiązań
symbolicznych. Kolejne argumenty wiersza poleceń powinny być plikami lub
katalogami do przeszukania, aż do pierwszego argumentu rozpoczynającego się
znakiem "\-" albo argumentu "(" lub "!". Argumenty te (razem z następnymi) są
rozpoznawane jako wyrażenie opisujące to, co ma zostać przeszukane. Jeśli
nie zostanie podana ścieżka, użyty będzie bieżący katalog. W przypadku braku
wyrażenia, używane jest domyślne wyrażenie \fB\-print\fP (lecz wówczas i tak
zapewne lepsze byłoby skorzystanie z \fB\-print0\fP).
.PP
Niniejsza strona podręcznika opisuje "opcje" w liście wyrażeń. Opcje te
kontrolują zachowanie \fBfind\fP, lecz są podane zaraz za ostatnią nazwą
ścieżkową. Z kolei pięć "prawdziwych" opcji (\fB\-H\fP, \fB\-L\fP, \fB\-P\fP, \fB\-D\fP i
\fB\-O\fP) musi pojawić się przed ścieżką, oczywiście jeśli okażą się
potrzebne. Podwójny dywiz \fB\-\-\fP może posłużyć do zasygnalizowania, że
pozostałe argumenty nie są opcjami (choć jeśli w liście punktów startowych
używa się masek, bezpieczniej jest zwykle poprzedzić je wszystkie "./" lub
"/").
.IP \fB\-P\fP
Nigdy nie podąża za dowiązaniami symbolicznymi. Jest to zachowanie
domyślne. Gdy \fBfind\fP sprawdza lub wypisuje informacje o pliku, a jest on
dowiązaniem symbolicznym, to użyta informacja powinna być wzięta z
właściwości samego dowiązania symbolicznego.
.IP \fB\-L\fP
Podąża za dowiązaniami symbolicznymi. Gdy \fBfind\fP sprawdza lub wypisuje
informacje o plikach, to powinny być one wzięte z właściwości pliku, na
który wskazuje dowiązanie symboliczne, a nie z samego dowiązania (chyba, że
jest to zerwane dowiązanie symboliczne lub \fBfind\fP nie może sprawdzić pliku,
na który wskazuje dowiązanie). Użycie tej opcji implikuje \fB\-noleaf\fP. Jeśli
użyje się później \fB\-P\fP, to \fB\-noleaf\fP wciąż będzie działać. Jeśli działa
\fB\-L\fP, a \fBfind\fP podczas wyszukiwania odkryje dowiązanie symboliczne do
podkatalogu, to przeszukany zostanie podkatalog, na który wskazuje
dowiązanie.
.IP
Gdy działa opcja \fB\-L\fP, to wskazanie \fB\-type\fP zawsze będzie dopasowane w
odniesieniu do typu pliku, na który wskazuje dowiązanie, zamiast do samego
dowiązania (chyba, że jest ono zerwane). Użycie \fB\-L\fP spowoduje, że
wskazanie \fB\-lname\fP i \fB\-ilname\fP zawsze zwróci fałsz.
.IP \fB\-H\fP
Nie podąża za dowiązaniami symbolicznymi, z wyjątkiem przetwarzania
argumentów wiersza polecenia. Gdy \fBfind\fP sprawdza lub wypisuje informacje o
plikach, powinny być one brane z właściwości samego dowiązania
symbolicznego. Jedynym wyjątkiem jest sytuacja, gdy plik podany w wierszu
polecenia jest dowiązaniem symbolicznym i może być ono rozwiązane. Wówczas
informacja jest brana z tego, na co wskazuje dowiązanie (tj. podąża się za
dowiązaniem). Informacja z samego dowiązania jest używana w razie, gdy plik,
na który wskazuje dowiązanie nie może być sprawdzony. Gdy działa \fB\-H\fP i
jedna ze ścieżek podanych w wierszu polecenia jest dowiązaniem symbolicznym
do katalogu, sprawdzana jest zawartość tego katalogu (zapobiegnie temu
skorzystanie z \-maxdepth 0).
.P
Jeśli podano więcej niż jedną z opcji \fB\-H\fP, \fB\-L\fP i \fB\-P\fP, każda przesłania
poprzednią \- liczy się ostatnia podana w wierszu polecenia, Ponieważ opcja
\fB\-P\fP jest domyślna, powinno się ją uznać za działającą, chyba że podano
\fB\-H\fP lub \fB\-L\fP.
GNU \fBfind\fP często sprawdza status plików podczas przetwarzania samego
wiersza polecenia, przed rozpoczęciem właściwego przeszukiwania. Opcje te
mogą również wpływać na sposób przetworzenia argumentów. Co więcej, istnieje
wiele testów, które porównują pliki z wiersza polecenia do aktualnie
rozważanego pliku. W każdym przypadku, plik podany w wierszu polecenia
będzie sprawdzony i niektóre z jego właściwości zostaną zachowane. Jeżeli
nazwany plik jest w rzeczywistości dowiązaniem symbolicznym, a działa opcja
\fB\-P\fP (lub nie podano \fB\-H\fP, ani \fB\-L\fP), to informacja użyta do porównania
zostanie wzięta z właściwości dowiązania symbolicznego. W przeciwnym razie,
właściwości będą wzięte z pliku, na który wskazuje dowiązanie. Jeżeli
\fBfind\fP nie może podążyć za dowiązaniem (np. ponieważ ma niewystarczające
uprawnienia lub dowiązanie wskazuje na nieistniejący plik) zostaną użyte
właściwości samego dowiązania.
.P
Gdy działa opcja \fB\-H\fP lub \fB\-L\fP, rozwiązywane są wszystkie dowiązania
symboliczne podane jako argument do opcji \fB\-newer\fP, a znaczniki czasowe
będą wzięte z pliku, na który wskazuje dowiązanie symboliczne. To samo
dotczy opcji \fB\-newer\fP\fIXY\fP, \fB\-anewer\fP i \fB\-cnewer\fP.
Opcja \fB\-follow\fP ma podobne działanie do \fB\-L\fP, choć działa tylko w miejscu
pojawienia się (tj. jeśli \fB\-L\fP nie jest użyte, a skorzystano z \fB\-follow\fP,
to wszystkie dowiązania symboliczne pojawiające się w wierszu poleceń za
\fB\-follow\fP zostaną rozwiązane, lecz umieszczone wcześniej \- nie).
.IP "\fB\-D\fP \fIopcje\-debugowania\fP"
Wyświetla informacje diagnostyczne \- może okazać się przydatna do
zdiagnozowania przypadków, gdy \fBfind\fP nie robi tego czego od niego
oczekujemy. Lista opcji debugowania powinna być oddzielona przecinkami. Nie
gwarantuje się kompatybilności opcji debugowania pomiędzy wydaniami
findutils. Pełną listę prawidłowych opcji debugowania wyświetli polecenie
\fBfind \-D help\fP. Są to między innymi:
.RS
.IP help
Objaśnia opcje debugowania
.IP tree
Wyświetla drzewko wyrażeń w formie oryginalnej i zoptymalizowanej.
.IP stat
Wyświetla komunikaty o plikach sprawdzanych przez wywołania systemowe
\fBstat\fP i \fBlstat\fP. Program \fBfind\fP stara się zminimalizować liczbę takich
wywołań.
.IP opt
Wyświetla informacje diagnostyczne związane z optymalizację drzewka wyrażeń;
patrz opcja \fB\-O\fP.
.IP rates
Wyświetla podsumowanie wskazujące częstość sukcesu lub porażki każdego
wskazania.
.RE
.IP \fB\-O\fP\fIpoziom\fP
Włącza optymalizację zapytań. Program \fBfind\fP zmienia kolejność testów, aby
przyspieszyć wykonanie przy zachowaniu efektu końcowego; tj. nie zmienia się
wskazań z efektami ubocznymi w stosunku do każdego innego. Optymalizacje są
przeprowadzane zgodnie z poniższymi poziomami optymalizacji.
.RS
.IP 0
Odpowiednik poziomu optymalizacji 1.
.IP 1
Jest to domyślny poziom optymalizacji i odnosi się do tradycyjnego
zachowania. Kolejność wyrażeń jest zmieniana w ten sposób, że testy
działające tylko na nazwach plików (np. \fB\-name\fP lub \fB\-regex\fP) są
wykonywane jako pierwsze.
.IP 2
Testy \fB\-type\fP lub \fB\-xtype\fP są wykonywane po testach działających tylko na
nazwach plików, lecz przed testami wymagającymi informacji z i\-węzła. W
wielu współczesnych wersjach Uniksa, typy plików są zwracane przez
\fBreaddir()\fP, a więc są szybsze do sprawdzenia niż wskazówki, które wymagają
uprzedniego wykonania stat.
.IP 3
Na tym poziomie optymalizacji, włączona jest pełna optymalizacja, działająca
w oparciu o koszt zapytań. Kolejność testów jest modyfikowana w taki sposób,
aby tanie (szybkie) testy były przeprowadzane wcześniej, a droższe \-
później, jeśli to konieczne. Wewnątrz każdej grupy kosztowej, wskazania są
przeprowadzane wcześniej lub później, zgodnie z prawdopodobieństwem ich
powodzenia. Przy \fB\-o\fP, wskazania o większym prawdopodobieństwie sukcesu są
przeprowadzane wcześniej, a przy \fB\-a\fP, wcześniej wykonywane są wskazania o
większym prawdopodobieństwie niepowodzenia.
.RE
.IP
Optymalizator działający w oparciu o koszty, ma z góry przyjęte założenie o
prawdopodobieństwie powodzenia danego testu. W niektórych przypadkach,
prawdopodobieństwo bierze pod uwagę naturę testu (np. \fB\-type f\fP powinien
kończyć się sukcesem częściej niż \fB\-type c\fP). Optymalizator jest jeszcze w
fazie kalkulacji. Jeśli nie poprawi to wydajności programu \fBfind\fP, zostanie
ponownie usunięty. Podobnie, optymalizacje, które udowodnią swą rzetelność,
spójność i efektywność, mogą w przyszłości zostać włączone na niższym
poziomie optymalizacyjnym. Jednak domyślne zachowanie (poziom optymalizacji
1) nie zmieni się w wydaniach 4.3.x. Zestaw testów findutils wykonuje
wszystkie testy \fBfind\fP na każdym poziomie optymalizacji, aby mieć pewność,
że wyniki pozostają te same.
.P
.SH WYRAŻENIA
Wyrażenie jest złożone z opcji (które tyczą się raczej ogólnego działania,
niż przetwarzania konkretnego pliku i zawsze zwracają prawdę), testów (które
sprawdzają wartość prawdy lub fałszu) i akcji (które mają efekty uboczne i
zwracają wartość prawdziwą lub fałszywą); wszystkie te elementy są
rozdzielone operatorami. \fB\-and\fP jest domyślnym operatorem, przyjmowanym w
przypadku pominięcia go w jawnym zapisie.
Jeśli wyrażenie nie zawiera innych akcji niż \fB\-prune\fP, to na wszystkich
plikach, dla których jest ono prawdziwe, wykonywany jest \fB\-print\fP.
.SS OPCJE
.P
Wszystkie opcje zawsze zwracają prawdę. Z wyjątkiem \fB\-daystart\fP, \fB\-foolow\fP
i \fB\-regextype\fP, opcje wpływają na wszystkie testy, w tym testy podane przed
opcją. Jest tak, ponieważ opcje są przetwarzane przy parsowaniu wiersza
polecenia, a testy nie są wykonywane, do czasu działania na plikach. Opcje
\fB\-daystart\fP, \fB\-follow\fP i \fB\-regextype\fP wyróżniają się pod tym względem,
ponieważ wpływają jedynie na testy pojawiające się w wierszu polecenia za
nimi. Z tego powodu, najprzejrzyściej jest umieszczać je na początku
wyrażenia. Jeśli tak się nie stanie, wypisywane jest ostrzeżenie.
.IP \fB\-d\fP
Synonim \fB\-depth\fP, ze względu na kompatybilność z FreeBSD, NetBSD, MacOS X i
OpenBSD.
.IP \fB\-daystart\fP
Mierzy czasy (dla \fB\-amin\fP, \fB\-atime\fP, \fB\-cmin\fP, \fB\-ctime\fP, \fB\-mmin\fP i
\fB\-mtime\fP) od dziś, a nie od 24 godzin temu. Opcja ta wpływa jedynie na
testy, pojawiające się później w wierszu polecenia.
.IP \fB\-depth\fP
Przetwarza zawartość każdego katalogu przed samym katalogiem jako
takim. Akcja \fB\-delete\fP implikuje także \fB\-depth\fP.
.IP \fB\-follow\fP
Przestarzałe, proszę zamiast tego użyć opcji \fB\-L\fP. Rozwiązuje dowiązania
symboliczne. Implikuje \fB\-noleaf\fP. Opcja \fB\-foolow\fP działa jedynie na testy
pojawiające się w wierszu polecenia za nią. O ile nie poda się opcji \fB\-H\fP
lub \fB\-L\fP, pozycja opcji \fB\-follow\fP zmienia zachowanie wskazania \fB\-newer\fP \-
pliki będące argumentami \fB\-newer\fP zostaną rozwiązane, jeśli są dowiązaniami
symbolicznymi. To samo dotyczy opcji \fB\-newer\fP\fIXY\fP, \fB\-anewer\fP and
\fB\-cnewer\fP. Podobnie, wskazanie \fB\-type\fP zostanie zawsze dopasowane do pliku
wskazanego przez dowiązanie symboliczne, zamiast do samego
dowiązania. Użycie \fB\-follow\fP powoduje, że wskazania \fB\-lname\fP i \fB\-ilname\fP
zawsze zwracają fałsz.
.IP "\fB\-help\fP, \fB\-\-help\fP"
Wypisuje sposób użycia \fBfind\fP z wiersza poleceń i kończy pracę programu.
.IP \fB\-ignore_readdir_race\fP
Zwykle \fBfind\fP wyświetla błąd, gdy nie uda mu się pobrać statusu pliku. Po
podaniu tej opcji i usunięciu pliku pomiędzy odczytem przez \fBfind\fP nazwy
pliku z katalogu i momentem próby pobrania statusu, błąd nie zostanie
wyświetlony. Dotyczy to również plików i katalogów podanych w wierszu
polecenia. Opcja ta zaczyna działać już przy odczycie wiersza polecenia, co
oznacza, że nie da się przeszukiwać systemu plików częściowo z opcją
włączoną i częściowo z wyłączoną (aby to zrobić, konieczne jest dwukrotne
uruchomienie polecenia \fBfind\fP, jeden raz z opcją włączoną, a drugi \- z
wyłączoną).
.IP "\fB\-maxdepth\fP \fIgłębokość\fP"
Schodzi maksymalnie o \fIgłębokość\fP (nieujemna liczba całkowita) poziomów katalogów od argumentów wiersza poleceń. \fB\-maxdepth 0\fP oznacza, by testy i akcje stosować tylko do argumentów wiersza poleceń.
.IP "\fB\-mindepth\fP \fIgłębokość\fP"
Nie stosuje testów lub akcji w poziomach niższych niż \fIgłębokość\fP
(nieujemna liczba całkowita). \fBmindepth 1\fP oznacza przetwarzanie wszystkich
plików poza argumentami wiersza poleceń.
.IP \fB\-mount\fP
Nie zagłębia się w katalogi na innych systemach plików. Jest to alternatywna
nazwa dla \fB\-xdev\fP, stworzona dla zgodności z innymi wersjami \fBfind\fP.
.IP \fB\-noignore_readdir_race\fP
Wyłącza efekt opcji \fB\-ignore_readdir_race\fP.
.IP \fB\-noleaf\fP
Zakazuje optymalizacji wykonywanej przez zakładanie, że katalogi zawierają o
dwa podkatalogi mniej niż ich licznik dowiązań zwykłych (twardych). Opcja ta
jest wymagana podczas przeszukiwania systemów plików, które nie używają
uniksowej konwencji wiązania katalogów, takich jak systemy plików CD\-ROM,
MS\-DOS czy wolumeny AFS. Każdy katalog w normalnym systemie uniksowym
zawiera przynajmniej dwa twarde dowiązania: jego nazwę i ".". Dodatkowo,
jego podkatalogi będą do niego dowiązane za pomocą ".." każdy. Gdy \fBfind\fP
testuje katalog po zbadaniu funkcją stat o 2 mniej podkatalogów niż licznik
dowiązań, wie, że reszta wpisów jest niekatalogowa (są to "liście" \- "leaf"
w drzewie katalogów). Jeśli testowane mają być tylko nazwy plików, to nie ma
potrzeby ich sprawdzać; daje to znaczące przyspieszenie.
.IP "\fB\-regextype\fP \fItyp\fP"
Zmienia składnię wyrażeń regularnych rozumianych przez testy \fB\-regex\fP i
\fB\-iregex\fP podane później w wierszu poleceń. Obecnie zaimplementowanymi
typami są: \fBemacs\fP (domyślny), \fBposix\-awk\fP, \fBposix\-basix\fP, \fBposix\-egrep\fP
i \fBposix\-extended\fP.
.IP "\fB\-version\fP, \fB\-\-version\fP"
Wypisuje wersję i kończy pracę.
.IP "\fB\-warn\fP, \fB\-nowarn\fP"
Odpowiednio: włącza lub wyłącza ostrzeżenia. Odnoszą się one wyłącznie do
użycia wiersza poleceń, a nie do warunków zastanych przez \fBfind\fP podczas
przeszukiwania katalogów. Domyślne zachowanie odpowiada \fB\-warn\fP gdy
standardowym wejściem jest tty i \fB\-nowarn\fP w przeciwnym wypadku.
.IP \fB\-xdev\fP
Nie zagłębia się w katalogi na innych systemach plików.
.SS TESTY
Niektóre testy np. \fB\-newer\fP\fIXY\fP i \fB\-samefile\fP pozwalają na porównanie
pomiędzy aktualnie sprawdzanym plikiem i plikiem odniesienia podanym w
wierszu polecenia. Gdy te testy są używane, interpretacja pliku odniesienia
zależy od opcji \fB\-H\fP, \fB\-L\fP i \fB\-P\fP i podanej wcześniej \fB\-follow\fP, lecz
plik odniesienia jest sprawdzany tylko raz, przy przetwarzaniu wiersza
polecenia. Jeśli plik odniesienia nie może zostać sprawdzony (np. wywołanie
systemowe \fBstat\fP(2) nie powiedzie się na nim), wyświetlany jest błąd, a
\fBfind\fP wychodzi z niezerowym kodem zakończenia.
.P
Wartości numeryczne mogą być podawane jako
.IP \fB+\fP\fIn\fP
dla większych niż \fIn\fP,
.IP \fB\-\fP\fIn\fP
dla mniejszych niż \fIn\fP,
.IP \fIn\fP
dla równych \fIn\fP.
.P
.IP "\fB\-amin\fP \fIn\fP"
Dostęp do pliku nastąpił ostatnio \fIn\fP minut temu.
.IP "\fB\-anewer\fP \fIplik\fP"
Do pliku ostatnio dostano się wcześniej niż \fIplik\fP został
zmodyfikowany. Jeśli \fIplik\fP jest dowiązaniem i działa jedna z opcji \fB\-L\fP
lub \fB\-H\fP, to używany jest zawsze czas dostępu pliku, na który wskazuje
dowiązanie.
.IP "\fB\-atime\fP \fIn\fP"
Dostęp do pliku miał miejsce \fIn\fP*24 godzin temu. Gdy find dowie się jak
wiele okresów 24\-godzinnych temu dostano się do pliku, ignorowana jest część
ułamkowa; tak więc aby dopasować \fB\-atime +1\fP, dostęp do pliku musiał być co
najwyżej \fIdwa\fP dni temu.
.IP "\fB\-cmin\fP \fIn\fP"
Status pliku został zmieniony \fIn\fP minut temu.
.IP "\fB\-cnewer\fP \fIplik\fP"
Status pliku był ostatnio zmieniony wcześniej niż zmodyfikowano
\fIplik\fP. Jeśli \fIplik\fP jest dowiązaniem i działa jedna z opcji \fB\-L\fP lub
\fB\-H\fP, to używany jest zawsze czas modyfikacji pliku, na który wskazuje
dowiązanie.
.IP "\fB\-ctime\fP \fIn\fP"
Status pliku został zmieniony \fIn\fP*24 godzin temu. Proszę zapoznać się z
komentarzami do \fB\-atime\fP, aby zrozumieć wpływ zaokrąglenia na interpretację
czasu modyfikacji pliku.
.IP \fB\-empty\fP
Plik jest pusty i jest albo zwykłym plikiem, albo katalogiem.
.IP \fB\-executable\fP
Dopasowuje pliki wykonywalne i katalogi przeszukiwalne (w sensie tłumaczenia
nazw pliku). Bierze pod uwagę listy kontroli dostępu (ACL) i inne zasady
praw dostępu, które są ignorowane przez test \fB\-perm\fP. Ten test używa
wywołania systemowego \fBaccess\fP(2) i może być zmylony przez serwery NFS
używające mapowania UID (lub root\-squashing), gdyż wiele systemów
implementuje \fBaccess\fP(2) w jądrze klienta i nie może użyć informacji
mapowania UID po stronie serwera. Ponieważ test ten działa tylko w oparciu o
wywołanie systemowe \fBaccess\fP(2), nie ma gwarancji, że plik dla którego test
się powiódł, może być w rzeczywistości wykonany.
.IP \fB\-false\fP
Zawsze fałszywe.
.IP "\fB\-fstype\fP \fItyp\fP"
Plik jest na systemie plików o typie \fItyp\fP. Prawidłowe typy systemów plików
różnią się na różnych wersjach Uniksa; ich niekompletna lista, która jest
przyjmowana w części systemów to: \fBufs\fP, \fB4.2\fP, \fB4.3\fP, \fBnfs\fP, \fBtmp\fP,
\fBmfs\fP, \fBS51K\fP, \fBS52K\fP. Aby zobaczyć typy swoich systemów plików, należy
użyć \-printf z dyrektywą %F.
.IP "\fB\-gid\fP \fIn\fP"
Numeryczny GID pliku to \fIn\fP.
.IP "\fB\-group\fP \fInazwag\fP"
Plik należy do grupy \fInazwag\fP (numeryczny GID jest dopuszczalny).
.IP "\fB\-ilname\fP \fIwzorzec\fP"
Podobnie jak \fB\-lname\fP, lecz dopasowanie jest niezależne od wielkości
znaków. Jeśli działa opcja \fB\-L\fP lub \fB\-follow\fP, test zwraca fałsz, chyba że
dowiązanie symboliczne jest zerwane.
.IP "\fB\-iname\fP \fIpattern\fP"
Podobnie jak \fB\-name\fP, lecz dopasowanie jest niezależne od wielkości
znaków. Na przykład wzorce "fo*" i "F??" dopasują nazwy plików "Foo", "FOO",
"foo", "fOo", itp. W tych wzorcach, w przeciwieństwie do uzupełniania nazw
plików przez powłokę, początkowe "." może być dopasowane za pomocą "*"
tzn. \fBfind \-name *bar\fP dopasuje plik ".foobar". Proszę zwrócić uwagę, że
wzorce należy zacytować, ponieważ w przeciwnym wypadku maski zostaną
zinterpretowane przez powłokę.
.IP "\fB\-inum\fP \fIn\fP"
Plik ma numer i\-węzła \fIn\fP. Zwykle łatwiej jest użyć testu \fB\-samefile\fP.
.IP "\fB\-ipath\fP \fIwzorzec\fP"
Zachowuje się w ten sam sposób, co \fB\-iwholename\fP. Opcja jest przestarzała,
więc proszę jej nie używać.
.IP "\fB\-iregex\fP \fIwzorzec\fP"
Podobne do \fB\-regex\fP, lecz dopasowanie jest niewrażliwe na rozmiar liter.
.IP "\fB\-ilname\fP \fIpattern\fP"
Podobne do \fB\-wholename\fP, lecz dopasowania są niewrażliwe na rozmiar liter.
.IP "\fB\-links\fP \fIn\fP"
Plik ma \fIn\fP dowiązań.
.IP "\fB\-lname\fP \fIwzorzec\fP"
Plik jest dowiązaniem symbolicznym, którego zawartość odpowiada wzorcowi
powłoki \fIwzorzec\fP. Metaznaki nie traktują specjalnie "/" i ".". Jeśli
działa opcja \fB\-L\fP lub \fB\-follow\fP, to test zwraca fałsz, chyba że dowiązanie
symboliczne jest zerwane.
.IP "\fB\-mmin\fP \fIn\fP"
Dane pliku były ostatnio modyfikowane \fIn\fP minut temu.
.IP "\fB\-mtime\fP \fIn\fP"
Dane pliku zostały ostatnio zmodyfikowane \fIn\fP*24 godziny temu. Proszę
zapoznać się komentarzami do opcji \fB\-atime\fP, aby zrozumieć, w jaki sposób
zaokrąglanie wpływa na interpretację czasów modyfikacji pliku.
.IP "\fB\-name\fP \fIwzorzec\fP"
Część bazowa nazwy pliku (ścieżka bez początkowych katalogów) dopasowuje
wzorzec powłoki \fIwzorzec\fP. Metaznaki ("*", "?" i "[]") dopasowują "." na
początku nazwy bazowej (wprowadzono to w findutils\-4.2.2; patrz rozdział
ZGODNOŚĆ ZE STANDARDAMI). Nawiasy klamrowe nie są rozpoznawane jako
specjalne, niezależnie od faktu, że niektóre powłoki, w tym Bash, nadają mu
specjalne znaczenie we wzorcach powłoki. Dopasowanie nazwy pliku jest
przeprowadzane za pomocą funkcji bibliotecznej \fBfnmatch\fP(3). Proszę nie
zapomnieć ująć wzorca w cudzysłowy, aby zapobiec interpretacji go przez
powłokę.
.IP "\fB\-newer\fP \fIplik\fP"
Plik został zmodyfikowany później niż \fIplik\fP. Jeśli \fIplik\fP jest
dowiązaniem symbolicznym i działają opcje \fB\-H\fP lub \fB\-L\fP, to używany jest
zawsze czas modyfikacji pliku, na który wskazuje dowiązanie.
.IP "\fB\-newer\fP\fIXY odniesienie\fP"
Porównuje znacznik czasowy bieżącego pliku z \fIodniesieniem\fP. Argument
\fIodniesienie\fP jest zwykle nazwą pliku (i jeden z jego znaczników jest użyty
do porównania), lecz może być to również łańcuch, opisujący czas
bezwzględny. \fIX\fP i \fIY\fP mają być zastąpione innymi literami, które
wybierają który czas pliku (\fIX\fP) i \fIodniesienia\fP (\fIY\fP) jest używany do
porównania.
.TS
ll
ll
ll
ll
llw(2i).
a Czas dostępu (ang. access) pliku \fIodniesienie\fP
B Czas powstania (ang. birth) pliku \fIodniesienie\fP
c Czas zmiany (ang. change) statusu i\-węzła \fIodniesienia\fP
m Czas modyfikacji pliku \fIodniesienie\fP
t \fIodniesienie\fP jest interpr. bezpośrednio jako czas (ang. time)
.TE
Niektóre kombinacje są nieprawidłowe, np. \fIX\fP nie może być \fBt\fP. Część
kombinacji nie jest zaimplementowanych we wszystkich systemach, do takich
należy np. \fBB\fP. Jeśli poda się nieprawidłową lub nieobsługiwaną kombinację
\fIXY\fP, otrzymuje się błąd krytyczny. Określenia czasowe są interpretowane
jak argument do opcji \fB\-d\fP GNU \fBdate\fP. Jeżeli czas powstania pliku
odniesienia nie może być ustalony, to przy próbie użycia go wynikiem jest
komunikat o błędzie krytycznym. Jeśli poda się test, odnoszący się do czasu
powstania sprawdzanych plików, to test ten nie powiedzie się dla wszystkich
plików, których czas ten jest nieznany.
.IP \fB\-nogroup\fP
Do numerycznego GID pliku nie pasuje żadna grupa.
.IP \fB\-nouser\fP
Do numerycznego UID pliku nie pasuje żaden użytkownik.
.IP "\fB\-path\fP \fIwzorzec\fP"
Nazwa pliku odpowiada wzorcowi powłoki \fIwzorzec\fP. Metaznaki nie traktują
specjalnie "/" lub "."; tak więc na przykład,
.br
.in +1i
find . \-path "./sr*sc"
.br
.in -1i
wypisze wpis katalogowy o nazwie "./src/misc" (jeśli taki istnieje). Aby
zignorować całe drzewo katalogowe, proszę użyć \fB\-prune\fP, zamiast sprawdzać
każdy plik w drzewie. Na przykład, aby pominąć katalog "src/emacs" i
wszystkie jego pliki i katalogi oraz wypisać nazwy innych znalezionych
plików, proszę użyć:
.br
.in +1i
find . \-path ./src/emacs \-prune \-o \-print
.br
.in -1i
Proszę zauważyć, że test dopasowuje wzorzec do całej nazwy pliku, poczynając
od punktu początkowego, podanego w wierszu polecenie. Jeśli punkt startowy
jest ścieżką absolutną, sens ma zastosowanie również wyłącznie ścieżki
absolutnej. Oznacza to, że poniższe polecenie nigdy niczego nie dopasuje.
.br
.in +1i
find bar \-path /foo/bar/myfile \-print
.br
.in -1i
Wskazanie \fB\-path\fP jest obsługiwane również przez \fBfind\fP HP\-UX i zostanie
uwzględnione w kolejnej wersji standardu POSIX.
.IP "\fB\-perm\fP \fIprawa\fP"
Bity praw pliku są dokładnie takie, jak \fIprawa\fP (w formie ósemkowej lub
symbolicznej). Ponieważ wymagane jest dokładne dopasowanie, stosowanie tej
formuły w postaci symbolicznej wymaga podania dość skomplikowanego łańcucha
praw. Na przykład \fB\-perm g=w\fP dopasuje jedynie pliki o trybie 0020 (tj. te,
których prawo zapisu dla grupy jest jedynym ustawionych
uprawnieniem). Prawdopodobnie w takim przypadku lepsze jest użycie form "/"
lub "\-", np. \fB\-perm \-g=w\fP, które dopasowuje każdy plik z prawem zapisu dla
grupy. Lepsze przykłady podano w rozdziale \fBPRZYKŁADY\fP.
.IP "\fB\-perm \-\fP\fIprawa\fP"
Wszystkie bity \fIpraw\fP pliku są ustawione dla pliku. Akceptowane są tryby w
postaci symbolicznej i jest to zwykle wygodniejsza forma do użycia. W
przypadku korzystania z postaci symbolicznej trzeba podać "u", "g" lub
"o". Lepsze przykłady podano w rozdziale \fBPRZYKŁADY\fP.
.IP "\fB\-perm /\fP\fIprawa\fP"
Ustawiony jest dowolny z bitów \fIpraw\fP pliku. Akceptowane są tryby w postaci
symbolicznej. W przypadku korzystania z postaci symbolicznej trzeba podać
"u", "g" lub "o". Lepsze przykłady podano w rozdziale \fBPRZYKŁADY\fP. Jeśli
nie ustawiono bitów praw w \fItrybie\fP, to test dopasuje każdy plik (zgodnie z
zamysłem, aby pozostać w zgodzie z zachowaniem \fB\-perm \-000\fP).
.IP "\fB\-perm +\fP\fIprawa\fP"
Przestarzałe, stara metoda szukania plików z bitami uprawnień zgodnymi z
\fIprawami\fP. Obecnie należy używać \fB\-perm /\fP\fIprawa\fP. Próba użycia \fB+\fP w
składni z postacią symboliczną, da zaskakujące wyniki. Przykładowo, "+u+x"
jest prawidłowym trybem symbolicznym (odpowiednikiem +u,+x np. 0111) i nie
zostanie przetłumaczony na \fB\-perm +\fP\fIprawa\fP, lecz na dokładne określenie
praw \fB\-perm\fP \fIprawa\fP, dopasowane zostaną więc jedynie plik o uprawnieniach
dokładnie 0111, zamiast wszystkich plików z bitem wykonywalności. Jeśli
akapit ten nie jest jasny, to nic dziwnego \- proszę używać po prostu \fB\-perm
/\fP\fItryb\fP. Ta postać testu \fB\-perm\fP jest przestarzała, ponieważ POSIX wymaga
interpretacji początkowego "+" jako części postaci symbolicznej \- dlatego
właśnie obecnie korzystamy z "/".
.IP \fB\-readable\fP
Dopasowuje odczytywalne pliki. Bierze się tu pod uwagę listy kontroli
dostępu (ACL) i inne sprawy związane z uprawnieniami, które \fB\-perm\fP
ignoruje. Ten test używa wywołania systemowego \fBaccess\fP(2) i może być
zmylony przez serwery NFS używające mapowania UID (lub root\-squashing), gdyż
wiele systemów implementuje \fBaccess\fP(2) w jądrze klienta i nie może użyć
informacji mapowania UID po stronie serwera.
.IP "\fB\-regex\fP \fIwzorzec\fP"
Nazwa pliku odpowiada wyrażeniu regularnemu \fIwzorzec\fP. Dopasowanie stosuje
się do całej ścieżki, nie dla przeszukiwanej. Na przykład, aby dopasować
plik o nazwie "./fubar3", można użyć wyrażenia regularnego ".*bar" lub
".*b.*3", lecz nie "f.*r3". Wyrażenia regularne rozumiane przez \fBfind\fP są
domyślnie wyrażeniami regularnymi Emacsa, lecz można to zmienić opcją
\fB\-regextype\fP.
.IP "\fB\-samefile\fP \fInazwa\fP"
Plik odnosi się do tego samego i\-węzła co \fInazwa\fP. Gdy działa opcja \fB\-L\fP,
obejmuje to dowiązania symboliczne.
.IP "\fB\-size\fP \fIn\fP[\fBc\fP|\fBw\fP|\fBb\fP|\fBk\fP|\fBM\fP|\fBG\fP]"
Plik używa \fIn\fP jednostek miejsca. Można dodać następujące przyrostki:
.RS
.IP b
bloki 512\-bajtowe (wartość domyślna, gdy nie użyto przyrostka)
.IP c
bajty
.IP w
słowa dwubajtowe
.IP k
kilobajty (1024 bajtów)
.IP M
megabajty (1048576 bajtów)
.IP G
gigabajty (1073741824 bajtów)
.RE
.IP
Rozmiar nie obejmuje bloków pośrednich, lecz wlicza bloki w tzw. plikach
rzadkich, które nie są w rzeczywistości zaalokowane. Proszę pamiętać, że
określenia formatu "%k" i "%b" akcji \fB\-printf\fP obsługują pliki rzadkie w
inny sposób. Przyrostek "b" oznacza zawsze bloki 512\-bajtowe, a nigdy nie
jednokilobajtowe, co różni się od zachowania \fB\-ls\fP.
.IP \fB\-true\fP
Zawsze prawda.
.IP "\fB\-type\fP \fIc\fP"
Plik jest typu \fIc\fP:
.RS
.IP b
blokowy (buforowany) plik specjalny
.IP c
znakowy (niebuforowany) plik specjalny (ang. character)
.IP d
katalog (ang. directory)
.IP p
łącze nazwane (FIFO, ang. pipe)
.IP f
zwykły plik (ang. file)
.IP l
dowiązanie symboliczne (link); nigdy nie jest to prawda, gdy działa opcja
\fB\-L\fP lub \fB\-foolow\fP, chyba że dowiązanie jest zerwane. Aby wyszukiwać
dowiązania symboliczne przy korzystaniu z opcji \fB\-L\fP, należy użyć
\fB\-xtype\fP.
.IP s
gniazdo (ang. socket)
.IP D
door (Solaris)
.RE
.IP "\fB\-uid\fP \fIn\fP"
Numeryczny UID pliku to \fIn\fP.
.IP "\fB\-used\fP \fIn\fP"
Do pliku ostatnio dostano się \fIn\fP dni po zmianie jego statusu.
.IP "\fB\-user\fP \fIunazwa\fP"
Właścicielem pliku jest użytkownik \fIunazwa\fP (numeryczny UID jest tu
dozwolony).
.IP "\fB\-wholename\fP \fIwzorzec\fP"
Patrz \fB\-path\fP. Ta alternatywa jest mniej przenośna niż wspomniana opcja.
.IP \fB\-writable\fP
Dopasowuje zapisywalne pliki. Bierze pod uwagę listy kontroli dostępu (ACL)
i inne zasady praw dostępu, które są ignorowane przez test \fB\-perm\fP. Ten
test używa wywołania systemowego \fBaccess\fP(2) i może być zmylony przez
serwery NFS używające mapowania UID (lub root\-squashing), gdyż wiele
systemów implementuje \fBaccess\fP(2) w jądrze klienta i nie może użyć
informacji mapowania UID po stronie serwera.
.IP "\fB\-xtype\fP \fIc\fP"
Jest to to samo co \fB\-type\fP, chyba że plik jest dowiązaniem
symbolicznym. Dla dowiązań symbolicznych: jeśli podano \fB\-H\fP lub \fB\-P\fP, jest
prawdziwe gdy plik jest dowiązaniem do pliku typu \fIc\fP; jeśli podano \fB\-L\fP,
jest prawdziwe, jeśli \fIc\fP to "l". Innymi słowy, dla dowiązań symbolicznych
\fB\-xtype\fP sprawdza typ pliku, którego nie sprawdza \fB\-type\fP.
.SS AKCJE
.IP \fB\-delete\fP
Usuwa pliki; prawdziwe gdy usunięcie powiedzie się. Jeśli nie, to wypisywany
jest błąd. Jeśli \fB\-delete\fP zawiedzie, kod zakończenia \fBfind\fP będzie
niezerowy (gdy program ostatecznie się zakończy). Użycie \fB\-delete\fP
automatycznie włącza opcję \fB\-depth\fP.
\fBOstrzeżenie\fP: Proszę nie zapomnieć, że wiersz poleceń \fBfind\fP jest
wykonywany jako wyrażenie, więc umieszczenie \fB\-delete\fP jako pierwszego
spowoduje próbę usunięcie wszystkiego poniżej podanych punktów
początkowych. Podczas testowania wiersza polecenia \fBfind\fP, którą chce się
później użyć z \fB\-delete\fP, proszę podać bezpośrednio \fB\-depth\fP, aby uniknąć
późniejszych niespodzianek. Ponieważ \fB\-delete\fP implikuje \fB\-depth\fP, to nie
da się użyć \fB\-prune\fP i \fB\-delete\fP w sposób przydatny.
.IP "\fB\-exec\fP \fIpolecenie\fP \fB;\fP"
Wykonuje \fIpolecenie\fP; prawdziwe jeśli zwrócony został status 0. Wszelkie
następne argumenty \fBfind\fP są brane za argumenty polecenia, aż nie zostanie
napotkany argument, składający się z ";". Łańcuch "{}' jest podmieniany na
obecnie przetwarzaną nazwę pliku, wszędzie, gdzie wystąpi ona w wierszu
polecenia, nie tylko w argumentach, gdzie jest ona sama, jak w niektórych
wersjach \fBfind\fP. Obydwie te konstrukcje być może będą wymagały zacytowania
(znakiem "\e") aby uchronić je przed rozwinięciem przez powłokę. Więcej
informacji na temat użycia opcji \fB\-exec\fP, zawiera rozdział
\fBPRZYKŁADY\fP. Polecenie jest wykonywane w katalogu startowym. W związku z
akcją \fB\-exec\fP występują pewne nieuniknione zagrożenia związane z
bezpieczeństwem, należy zamiast niej używać \fB\-execdir\fP.
.IP "\fB\-exec\fP \fIpolecenie\fP \fB{} +\fP"
Ten wariant akcji \fB\-exec\fP, wykonuje podane polecenie na wybranych plikach,
lecz wiersz polecenia jest budowany przez dodawanie każdej wybranej nazwy
pliku na końcu \- całkowita liczba wywołań polecenia będzie znacznie
mniejsza, niż liczba dopasowanych plików. Wiersz polecenia jest budowany w
ten sam sposób, w jaki \fBxargs\fP buduje swój. W poleceniu dozwolone jest
wystąpienie jedynie jednych nawiasów "{}". Polecenie jest wykonywane w
katalogu początkowym.
.IP "\fB\-execdir\fP \fIpolecenie\fP \fB;\fP"
.IP "\fB\-execdir\fP \fIpolecenie\fP \fB{} +\fP"
Podobnie jak \fB\-exec\fP, lecz podane polecenie jest uruchamiane z podkatalogu
zawierającego dopasowany plik, który nie jest zwykle tożsamy z katalogiem, w
którym uruchomiono \fBfind\fP. Jest to o wiele bezpieczniejsza metoda
wywoływania poleceń, ponieważ zapobiega wyścigowi przy rozwiązywaniu ścieżek
do dopasowanych plików. Podobnie jak przy akcji \fB\-exec\fP, postać z "+"
\fB\-execdir\fP zbuduje wiersz poleceń aby przetworzyć więcej niż jeden
dopasowany plik, lecz każde dane wywołanie \fIpolecenia\fP wypisze jedynie
pliki, które istnieją w tym samym podkatalogu. Przy używaniu tej opcji,
trzeba się upewnić, że zmienna środowiskowa \fB$PATH\fP nie odnosi się do "." \-
w takim wypadku atakujący mógłby uruchomić dowolne polecenie, przez
pozostawienie pliku o odpowiedniej nazwie w katalogu, w którym zostanie
uruchomione \fB\-execdir\fP. To samo tyczy się wpisów w \fB$PATH\fP, które są puste
lub nie są bezwzględną nazwą katalogu.
.IP "\fB\-fls\fP \fIplik\fP"
Prawda; podobne do \fB\-ls\fP, lecz zapisuje do \fIpliku\fP jak \fB\-fprint\fP. Plik
wyjściowy jest tworzony zawsze, nawet jeśli wskazanie nigdy nie pasuje. W
rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje nt. obsługi
nietypowych nazw plików.
.IP "\fB\-fprint\fP \fIplik\fP"
Prawdziwe; wypisuje pełną nazwę pliku do \fIpliku\fP. Jeśli \fIplik\fP nie
istnieje w czasie działania \fBfind\fP, zostanie utworzony; jeśli istnieje,
zostanie obcięty. Nazwy plików "/dev/stdout" i "/dev/stderr" są traktowane
osobno; odnoszą się one odpowiednio do standardowego wyjścia i standardowego
wyjścia błędów. Plik wyjściowy jest tworzony zawsze, nawet jeśli wskazanie
nigdy nie pasuje. W rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się
informacje nt. obsługi nietypowych nazw plików.
.IP "\fB\-fprint0\fP \fIplik\fP"
Prawda; podobne do \fB\-print0\fP, lecz zapisuje do \fIpliku\fP jak
\fB\-fprint\fP. Plik wyjściowy jest tworzony zawsze, nawet jeśli wskazanie nigdy
nie pasuje. W rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje
nt. obsługi nietypowych nazw plików.
.IP "\fB\-fprintf\fP \fIplik\fP \fIformat\fP"
Prawda; podobne do \fB\-printf\fP, lecz zapisuje do \fIpliku\fP jak
\fB\-fprint\fP. Plik wyjściowy jest tworzony zawsze, nawet jeśli wskazanie nigdy
nie pasuje. W rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje
nt. obsługi nietypowych nazw plików.
.IP \fB\-ls\fP
Prawdziwe; wypisuje plik bieżący w formacie \fBls \-dils\fP na standardowe
wyjście. Liczniki bloków są 1K blokami, chyba że ustawiono zmienną
środowiskową POSIXLY_CORRECT, kiedy używane będą 512\-bajtowe bloki. W
rozdziale \fBNIETYPOWE NAZWY PLIKÓW\fP znajdują się informacje nt. obsługi
nietypowych nazw plików.
.IP "\fB\-ok\fP \fIpolecenie\fP \fB;\fP"
Jak \fB\-exec\fP, lecz najpierw pyta użytkownika. Jeśli się on zgodzi \-
uruchamia polecenie. W przeciwnym wypadku jedynie zwraca fałsz. Gdy
polecenie jest uruchomione, standardowe wejście jest przekierowane z
\fB/dev/null\fP.
.IP
Odpowiedź na pytanie jest dopasowywane do pary wyrażeń regularnych, aby
określić, czy jest pozytywna czy negatywna. Wyrażenie to jest pozyskiwane z
systemu, jeśli ustawiona jest zmienna środowiskowa \fBPOSIXLY_CORRECT\fP, a w
przeciwnym wypadku \- z katalogu tłumaczeń komunikatów \fBfind\fP. Jeśli system
nie posiada odpowiednich definicji, użyta będzie własna definicja
\fBfind\fPa. W każdym przypadku, interpretacja wyrażenia regularnego będzie
zależała od zmiennej środowiskowej "LC_CTYPE" (klasy znakowe) i "LC_COLLATE"
(przedziały znaków i klasy równoważności).
.IP "\fB\-okdir\fP \fIpolecenie\fP \fB;\fP"
Jak \fB\-execdir\fP, lecz najpierw wyświetlane jest pytanie, podobnie jak przy
\fB\-ok\fP. Jeśli użytkownik nie zgodzi się, zwraca jedynie fałsz. Gdy polecenie
jest uruchomione, jego standardowe wejście jest przekierowane z
\fB/dev/null\fP.
.IP \fB\-print\fP
Prawdziwe; wypisuje pełną nazwę pliku na standardowe wyjście razem ze
znakiem nowego wiersza. Jeśli wyjście \fBfind\fPa jest przekierowane za pomocą
potoku do innego programu i istnieje choć najmniejsza możliwość, że nazwa
jednego z przeszukiwanych plików może zawierać znak nowego wiersza, należy
się poważnie zastanowić, czy lepszym wyjściem nie będzie skorzystanie z
opcji \fB\-print0\fP, zamiast \fB\-print\fP. Rozdział \fBNIETYPOWE NAZWY PLIKÓW\fP
zawiera informacje nt. obsługi nietypowych znaków.
.IP \fB\-print0\fP
Prawdziwe; wypisje pełną nazwę pliku na standardowe wyjście. Za nazwą daje
znak null (zamiast znaku nowego wiersza używanego przez \fB\-print\fP. Umożliwia
to poprawne wyświetlenie plików, zawierających w nazwach znaki nowej linii w
programach, przetwarzających wyjście \fBfind\fPa. Opcja ta odpowiada opcji
\fB\-0\fP programu \fBxargs\fP.
.IP "\fB\-printf\fP \fIformat\fP"
Prawdziwe; wypisuje \fIformat\fP na standardowe wyjście, interpretując
sekwencje specjalne "\e" i dyrektywy "%". Szerokości pól i precyzje mogą być
podawane dokładnie jak w funkcji "printf" z C. Proszę zauważyć, że wiele z
pól jest wypisywanych jako %s, a nie jako %d \- może to oznaczać, że flagi
nie będą działać zgodnie z oczekiwaniami. Oznacza to również, że flaga "\-"
działa (wymusza wyrównanie do lewej pól). W przeciwieństwie do \fB\-print\fP,
\fB\-printf\fP nie dodaje znaku nowego wiersza do końca łańcucha. Sekwencje
specjalne i dyrektywy to:
.RS
.IP \ea
Dzwonek.
.IP \eb
Backspace.
.IP \ec
Wstrzymuje wypisywanie tego formatu i natychmiast wymiata wyjście.
.IP \ef
Wysuw wiersza.
.IP \en
Nowy wiersz.
.IP \er
Powrót karetki.
.IP \et
Tabulacja pozioma.
.IP \ev
Tabulacja pionowa.
.IP \e0
ASCII NUL.
.IP \e\e
Literalny lewy ukośnik ("\e").
.IP \e\fINNN\fP
Znak o kodzie ASCII \fINNN\fP (ósemkowo).
.PP
"\e", za którym następuje dowolny inny znak, jest traktowany jak zwykły
znak, więc są wypisywane obydwa.
.IP %%
Literalny znak procenta.
.IP %a
Ostatni czas dostępu do pliku w formacie zwracanym przez funkcję "ctime" C.
.IP %A\fIk\fP
Ostatni czas dostępu do pliku, w formacie określonym przez \fIk\fP, którym może
być "@", lub dyrektywa dla funkcji C "strftime". Możliwe wartości \fIk\fP są
wymienione niżej; niektóre z nich mogą nie być dostępne na wszystkich
systemach z powodu różnic w "strftime" między systemami.
.RS
.IP @
Sekundy od 1 stycznia, 1970, 00:00 GMT, z częścią ułamkową.
.PP
Pola czasowe:
.IP H
godzina (00..23)
.IP I
godzina (01..12)
.IP k
godzina ( 0..23)
.IP l
godzina ( 1..12)
.IP M
minuta (00..59)
.IP p
przetłumaczone AM lub PM
.IP r
czas, 12\-godzinny (gg:mm:ss)
.IP S
Sekundy (00.00 .. 61.00). Jest tu część ułamkowa.
.IP T
czas, 24\-godzinny (gg:mm:ss)
.IP +
Data i czas, oddzielona "+" np "2004\-04\-28+22:22:05.0". Jest to rozszerzenie
GNU. Czas jest podany w bieżącej strefie czasowej (na którą wpływ może mieć
ustawiona zmienna środowiskowa TZ). Pole sekundowe zawiera część ułamkową.
.IP X
lokalna reprezentacja czasu (G:M:S)
.IP Z
strefa czasowa (np. EDT), lub nic jeśli nie da się jej określić
.PP
Pola daty:
.IP a
lokalny skrót nazwy tygodnia (nie..sob)
.IP A
lokalna pełna nazwa tygodnia, zmiennej długości (niedziela..sobota)
.IP b
lokalna skrócona nazwa miesiąca (sty..gru)
.IP B
lokalna pełna nazwa miesiąca, zmiennej długości (styczeń..grudzień)
.IP c
data i czas zgodnie z ustawieniami regionalnymi (sob, 4 lis 1989,
12:02:33). Format ten jest taki sam w przypadku \fBctime\fP(3) i w celu
zachowania z nim kompatybilności, nie ma tu części ułamkowej w polu sekund.
.IP d
dzień miesiąca (01..31)
.IP D
data (mm/dd/rr)
.IP h
to samo co b
.IP j
dzień roku (001..366)
.IP m
miesiąc (01..12)
.IP U
numer tygodnia w roku, z niedzielą liczoną jako pierwszy dzień tygodnia
(00..53)
.IP w
dzień tygodnia (0..6)
.IP W
numer tygodnia w roku, licząc z poniedziałkiem, jako pierwszym dniem
tygodnia (00..53)
.IP x
lokalna reprezentacja daty (mm.dd.rrrr)
.IP y
ostatnie dwie cyfry roku (00..99)
.IP Y
rok (1970...)
.RE
.IP %b
Wielkość przestrzeni dysku, użyta dla tego pliku w blokach
512\-bajtowych. Ponieważ przestrzeń dyskowa jest alokowana w
wielokrotnościach rozmiaru bloku systemu plików, jest to zwykle więcej niż
%s/512, lecz może być to również mniej, gdy plik jest tzw. plikiem rzadkim.
.IP %c
Ostatni czas zmiany statusu pliku, w formacie zwróconym przez funkcję
"ctime" z C.
.IP %C\fIk\fP
Ostatni czas zmiany statusu pliku w formacie określonym przez \fIk\fP, w taki
sam sposób, jak dla %A.
.IP %d
Głębokość pliku w drzewie katalogowym; 0 oznacza plik w argumencie wiersza
poleceń.
.IP %D
Numer urządzenia, na którym istnieje plik (pole st_dev ze stat struct),
dziesiętnie.
.IP %f
Nazwa pliku z usuniętymi początkowymi katalogami (tylko ostatni element
nazwy).
.IP %F
Rodzaj systemu plików, na którym znajduje się plik; wartość ta może być
używana do \-fstype.
.IP %g
Nazwa grupy pliku lub numeryczny GID, jeśli grupa nie ma nazwy.
.IP %G
Numeryczny GID pliku.
.IP %h
Początkowe katalogi z nazwy pliku (wszystkie, poza ostatnim
elementem). Jeśli nazwa pliku nie zawiera ukośników (ponieważ jest to
katalog bieżący), to %h daje ".".
.IP %H
Argument wiersza poleceń, pod którym plik został znaleziony.
.IP %i
Numer i\-węzła pliku (dziesiętnie).
.IP %k
Wielkość przestrzeni dysku, użyta dla tego pliku w blokach o wielkości 1K
bajtów. Ponieważ przestrzeń dyskowa jest alokowana w wielokrotnościach
rozmiaru bloku systemu plików, jest to zwykle więcej niż %s/1024, lecz może
być to również mniej, gdy plik jest tzw. plikiem rzadkim.
.IP %l
Obiekt dowiązania symbolicznego (pusty łańcuch, jeśli plik nie jest
dowiązaniem symbolicznym).
.IP %m
Bity praw pliku (ósemkowo). Ta opcja korzysta z "tradycyjnych" liczb,
używanych przez większość implementacji Uniksowych, lecz jeśli dana, używana
obecnie implementacja, wykorzystuje dziwną kolejność ósemkowych bitów
uprawnień, widoczna będzie różnica pomiędzy prawami pliku i wynikiem
%m. Zwykle chce się tu użyć początkowego zera i aby to zrobić należy
skorzystać z flagi \fB#\fP (np. "%#m")
.IP %M
Uprawnienia pliku (w postaci symbolicznej, jak w \fBls\fP). Ta dyrektywa jest
obsługiwana przez findutils 4.2.5 i późniejsze.
.IP %n
Liczba twardych dowiązań do pliku.
.IP %p
Nazwa pliku.
.IP %P
Nazwa pliku z usuniętą z początku nazwą argumentu wiersza poleceń, dla
którego ją znaleziono.
.IP %s
Rozmiar pliku w bajtach.
.IP %S
Rzadkość (dziurawość) pliku. Jest obliczana jako (ROZMIARBLOKU*st_blocks /
st_size). Dokładna wartość, jaką uzyska się dla danego zwykłego pliku o
określonej wielkości, jest zależna od systemu. Jednak pliki rzadkie będą
miały tę wartość zwykle mniejszą niż 1.0, a pliki używające bloków
pośrednich mogą mieć wartość większą niż 1.0. Wartość użyta dla ROZMIARBLOKU
zależy od systemu, lecz najczęściej jest to 512. Jeśli rozmiar bloku wynosi
zero, wypisywana wartość jest niezdefiniowana. W systemach nieobsługujących
st_blocks, rzadkość pliku przyjmuje się na 1.0.
.IP %t
Ostatni czas modyfikacji pliku w formacie zwróconym przez funkcję "ctime" z
C.
.IP %T\fIk\fP
Ostatni czas modyfikacji pliku, w formacie określonym przez \fIk\fP, podobnie
jak dla %A.
.IP %u
Nazwa użytkownika pliku, lub numeryczny UID, jeśli użytkownik nie ma nazwy.
.IP %U
Numeryczny UID pliku.
.IP %y
Typ pliku (podobnie jak w \fBls \-l\fP), "U" to typ nieznany (ang. unknown, nie
powinien wystąpić).
.IP %Y
Typ pliku (jak %y), lecz podąża za dowiązaniami: "L" to pętla (ang. loop), a
"N" \- oznacza nieistniejący.
.PP
Znak "%" po którym występuje dowolny inny znak jest ignorowany, lecz ten
drugi znak jest wypisywany (nie należy na tym polegać, gdyż mogą zostać
wprowadzone nowe znaki formatu). Symbol "%" na końcu argumentu formatu
skutkuje niezdefiniowanym zachowaniem, ponieważ brak jest następnego
znaku. W niektórych ustawieniach regionalnych opcja ta może ukryć klucz do
domu, w innych usunąć ostatnią stronicę czytanej powieści. Ostrzegaliśmy!
Dyrektywy %m i %d obsługują flagi \fB#\fP, \fB0\fP i \fB+\fP, lecz inne dyrektywy
nie, nawet jeśli wyświetlają liczby. Do dyrektyw liczbowych, które nie
obsługują tych flag, należą \fBG\fP, \fBU\fP, \fBb\fP, \fBD\fP, \fBk\fP i \fBn\fP. Flaga
formatu "\-" jest obsługiwana i zmienia wyrównanie pól z prawego (domyślnego)
na lewy.
.PP
Rozdział \fBNIETYPOWE NAZWY PLIKÓW\fP zawiera informacje nt. obsługi
nietypowych nazw plików.
.RE
.IP \fB\-prune\fP
Prawda; jeśli plik jest katalogiem, nie zagłębia się w niego. Jeśli podano
\fB\-depth\fP \- fałsz, brak działania. Ponieważ \fB\-delete\fP implikuje \fB\-depth\fP,
nie da się użyć \fB\-prunt\fP i \fB\-delete\fP łącznie.
.IP \fB\-quit\fP
Natychmiast wychodzi. Nie są pozostawiane żadne działające procesy potomne,
lecz nie będzie przetworzone więcej ścieżek podanych w wierszu
poleceń. Przykładowo, \fBfind /tmp/foo /tmp/bar \-print \-quit\fP wypisze jedynie
\fB/tmp/foo\fP. Wiersze polecenia zbudowane za pomocą \fB\-execdir ... () +\fP
zostaną wywołane przed zakończeniem \fBfind\fP. Kod zakończenia może wynosi
zero lub nie, w zależności od tego, czy wystąpił dotychczas błąd.
.SS "NIETYPOWE NAZWY PLIKÓW"
Wiele akcji \fBfind\fP skutkuje wypisywaniem danych, będących pod kontrolą
innych użytkowników. Dotyczy to nazw plików, rozmiarów, czasów modyfikacji
itp. Nazwy plików są potencjalnym problemem, ponieważ mogą zawierać dowolne
znaki oprócz "\e0" i "/". Nietypowe znaki w nazwach plików mogą robić
nieoczekiwane i często nieprzewidywalne rzeczy z terminalem użytkownika
(np. zmieniać ustawienia klawiszy funkcyjnych niektórych
terminali). Nietypowe znaki są obsługiwane w różny sposób, w zależności od
akcji, zgodnie z poniższym opisem.
.\"
.IP "\fB\-print0\fP, \fB\-fprint0\fP"
Zawsze wypisuje dokładne nazwy plików, niezmienione, nawet jeśli wynik
trafia na terminal
.IP "\fB\-ls\fP, \fB\-fls\fP"
Nietypowe znaki są zawsze cytowane. Białe znaki, odwrotny ukośnik i znak
podwójnego cudzysłowu jest wypisywany za pomocą cytowania w stylu C (np \ef
lub \e" ). Inne nietypowe znaki są wypisywane za pomocą cytowania
ósemkowego. Inne znaki drukowalne (dla \fB\-ls\fP i \fB\-fls\fP są to znaki pomiędzy
ósemkowym 041 i 0176) są wypisywane bez zmian.
.IP "\fB\-printf\fP, \fB\-fprintf\fP"
Jeśli wynik nie trafia na terminal, nic nie jest zmieniane. W przeciwnym
razie, wynik zależy od używanej dyrektywy. Dyrektywy %D, %F, %g, %G, %H, %Y
i %y są rozwijane do wartości, które nie są pod kontrolą właścicieli plików,
są więc wypisywane bez zmian. Dyrektywy %a, %b, %c, %d, %i, %k, %m, %M, %n,
%s, %t, %u i %U mają wartości będące pod kontrolą właścicieli plików, lecz
nie mogą być one użyte do wysłania dowolnych danych na terminal, dlatego są
wypisywane bez zmian. Dyrektywy %f, %h, %l, %p i %P są cytowane. Cytowanie
jest wykonywane w ten sam sposób, jak w GNU \fBls\fP. Nie jest to ten sam
mechanizm, co używany przez \fB\-ls\fP i \fB\-fls\fP. Jeśli można zdecydować o
formacie wyniku \fBfind\fP lepiej jest zwykle skorzystać z "\e0" jako
ogranicznika, zamiast używać znaku nowego wiersza, ponieważ nazwy plików
mogą zawierać białe znaki i znaki nowego wiersza. Ustawienie zmiennej
środowiskowej "LC_CTYPE" jest używane do określenia tego, które znaki mają
być cytowane.
.IP "\fB\-print\fP, \fB\-fprint\fP"
Cytowanie jest obsługiwane w ten sam sposób co w \fB\-printf\fP i
\fB\-fprintf\fP. Jeśli używa się \fBfind\fP w skrypcie lub w sytuacji, gdzie
dopasowywane pliki mogą mieć dowolne nazwy, powinno się rozważyć
skorzystanie z \fB\-print0\fP zamiast z \fB\-print\fP.
.P
Akcje \fB\-ok\fP i \fB\-okdir\fP wypisują bieżące nazwy plików bez zmian. Może się
to zmienić w kolejnych wydaniach.
.SS OPERATORY
.P
Wymienione według malejącego priorytetu:
.IP "\fB(\fP \fIwyraż\fP \fB)\fP"
Wymusza pierwszeństwo. Ponieważ nawiasy są znakami specjalnymi dla powłoki,
trzeba je zwykle cytować. Wiele przykładów z niniejszej strony podręcznika
używa do tego celu odwrotnych ukośników: "\e(...\e)" zamiast "(...)".
.IP "\fB!\fP \fIwyraż\fP"
Prawda, jeśli \fIwyraż\fP jest fałszywe. Znak ten zwykle wymaga również ochrony
przed interpretacją przez powłokę.
.IP "\fB\-not\fP \fIwyraż\fP"
Jak \fB!\fP \fIwyraż\fP, lecz nie jest zgodne z POSIX.
.IP "\fIwyraż1 wyraż2\fP"
Dwa wyrażenia z rzędu są traktowane, jakby były połączone jawnym i ("and");
\fIwyraż2\fP nie jest analizowany jeśli \fIwyraż1\fP jest fałszywe.
.IP "\fIwyraż1\fP \fB\-a\fP \fIwyraż2\fP"
To samo, co \fIwyraż1 wyraż2\fP.
.IP "\fIwyraż1\fP \fB\-and\fP \fIwyraż2\fP"
To samo, co \fIwyraż1 wyraż2\fP, lecz nie jest zgodne z POSIX.
.IP "\fIwyraż1\fP \fB\-o\fP \fIwyraż2\fP"
Lub ("or"); \fIwyraż2\fP nie jest analizowane jeśli \fIwyraż1\fP jest prawdziwe.
.IP "\fIwyraż1\fP \fB\-or\fP \fIwyraż2\fP"
To samo, co \fIwyraż1\fP \fB\-o\fP \fIwyraż2\fP, lecz nie jest zgodne z POSIX.
.IP "\fIwyraż1\fP \fB,\fP \fIwyraż2\fP"
Lista; zarówno \fIwyraż1\fP jak i \fIwyraż2\fP są zawsze analizowane. Wartość
\fIwyraż1\fP jest pomijana; wartością listy jest wartość \fIwyraż2\fP. Operator w
formie przecinka może być przydatny do wyszukiwania wielu różnych typów
rzeczy, lecz przechodząc przez hierarchię systemu plików tylko raz. Do
wypisania różnych dopasowań do wielu różnych plików wyjściowych, można użyć
akcji \fB\-fprintf\fP.
.SH "ZGODNOŚĆ ZE STANDARDAMI"
W celu najściślejszej zgodności ze standardem POSIX, należy ustawić zmienną
środowiskową \fBPOSIXLY_CORRECT\fP. W standardzie POSIX (IEEE Std 1003.1, 2003
Edition) określono następujące opcje:
.IP \fB\-H\fP
Opcja jest obsługiwana.
.IP \fB\-L\fP
Opcja jest obsługiwana.
.IP \fB\-name\fP
Opcja jest obsługiwana, lecz zgodność z POSIX zależy od zgodności z POSIX
systemowej funkcji bibliotecznej \fBfnmatch\fP(3). Od wersji findutils\-4.2.2
metaznaki powłoki (np. "*", "?", "[]") dopasują początkowe ".", ponieważ
wymaga tego interpretacja 126 IEEE PASC. Jest to zmiana w stosunku do
poprzednich wersji findutils.
.IP \fB\-type\fP
Obsługiwane. POSIX określa "b", "c", "d", "l", "p", "f" i "s". GNU find
obsługuje również "D", reprezentujące Door, w systemach, które to obsługują.
.IP \fB\-ok\fP
Obsługiwane. Interpretacja odpowiedzi jest zgodna z wzorcami "yes" i "no"
wybranymi przez ustawienie zmiennej środowiskowej "LC_MESSAGES". Gdy
ustawiona jest zmienna środowiskowa "POSIXLY_CORRECT", wzorce te są wzięte z
systemowych definicji odpowiedzi pozytywnej (yes) lub negatywnej
(no). Proszę zapoznać się z systemową dokumentacją \fBnl_langinfo\fP(3), w
szczególności YESEXPR i NOEXPR. Gdy "POSIXLY_CORRECT" nie jest ustawiona,
wzorce są brane z własnego katalogu komunikatów \fBfind\fP.
.IP \fB\-newer\fP
Obsługiwane. Jeśli podany plik jest dowiązaniem symbolicznym, jest zawsze
rozwiązywany. Jest to zmiana w stosunku do wcześniejszego zachowania, gdy
odpowiedni czas był brany z samego dowiązania; patrz poniższy rozdział
\fBHISTORIA\fP.
.IP \fB\-perm\fP
Obsługiwane. Jeśli zmienna środowiskowa POSIXLY_CORRECT nie jest ustawiona,
część argumentów trybu (np. +a+x), która nie jest prawidłowa w POSIX, jest
obsługiwana w celu zachowania kompatybilności wstecznej.
.IP "Inne wskazania"
Wszystkie wskazania: \fB\-atime\fP, \fB\-ctime\fP, \fB\-depth\fP, \fB\-group\fP, \fB\-links\fP,
\fB\-mtime\fP, \fB\-nogroup\fP, \fB\-nouser\fP, \fB\-print\fP, \fB\-prune\fP, \fB\-size\fP, \fB\-user\fP
i \fB\-xdev\fP są obsługiwane
.P
Standard POSIX określa nawiasy "(", ")", negację "!" i operatory "and" oraz
"or" (\fB\-a\fP, \fB\-o\fP).
.P
Wszystkie inne opcje, wskazania, wyrażenia itd. są rozszerzeniami
wykraczającymi poza standard POSIX. Wiele z nich nie jest jednak unikalnych
dla GNU find.
.P
Standard POSIX wymaga wykrywania przez \fBfind\fP pętli:
.IP
Narzędzie \fBfind\fP powinno wykrywać pętle nieskończone, tj. gdy wchodzi do
wcześniej odwiedzonego katalogu, będącego przodkiem pliku, który wystąpił
jako ostatni. Gdy pętla nieskończona jest wykrywana, find powinien wypisać
informację diagnostyczną na standardowe wyjście błędów i powinien albo
odzyskać swą pozycję w hierarchii albo wyjść.
.P
GNU \fBfind\fP jest zgodny z tymi wymaganiami. Liczba dowiązań katalogów
zawierających wpisy będące dowiązaniami zwykłymi (twardymi) do katalogu
nadrzędnego będzie często niższa, niż powinna być. Oznacza to, że GNU find
czasami zoptymalizuje liczbę sprawdzeń podkatalogów będących dowiązaniem do
katalogu nadrzędnego. Ponieważ \fBfind\fP nie wchodzi w rzeczywistości do
każdego podkatalogu, może unikać wyświetlania komunikatu
diagnostycznego. Choć to zachowanie może być niekiedy mylące, jest mało
prawdopodobne, aby ktokolwiek na nim polegał. Jeśli optymalizacja "liściowa"
(ang. leaf optimisation) zostanie wyłączona za pomocą \fB\-noleaf\fP, wpis
katalogu zostanie zawsze sprawdzony, a gdy to będzie konieczne, zostanie
wypisany komunikat diagnostyczny. Dowiązanie symboliczne nie może być użyte
do tworzenia podobnych cykli systemu plików, lecz jeśli działa opcja \fB\-L\fP
lub \fB\-follow\fP, komunikat diagnostyczny zostanie wypisany, gdy \fBfind\fP
natrafi na pętlę dowiązań symbolicznych. Podobnie jak w przypadku pętli z
dowiązaniami zwykłymi (twardymi), optymalizacja liściowa często będzie
oznaczać, że \fBfind\fP wie, iż nie musi wywoływać \fIstat()\fP lub \fIchdir()\fP na
dowiązaniu symbolicznym, więc taka diagnostyka często nie jest konieczna.
.P
Opcja \fB\-d\fP jest obsługiwana w celu kompatybilności z różnymi systemami BSD,
lecz powinno się w zamian używać zgodną z POSIX opcję \fB\-depth\fP.
.P
Zmienna środowiskowa POSIXLY_CORRECT nie wpływa na zachowanie testów
\fB\-regex\fP ani \fB\-iregex\fP, ponieważ opcje te nie są określone w standardzie
POSIX.
.SH "ZMIENNE ŚRODOWISKOWE"
.IP \fBLANG\fP
Dostarcza domyślną wartość do zmiennych dotyczących umiędzynarodowienia,
które nie są ustawione lub są puste.
.IP \fBLC_ALL\fP
Jeśli jest ustawiona na niepusty łańcuch, przesłania wartość wszystkich
innych zmiennych dotyczących umiędzynarodowienia.
.IP \fBLC_COLLATE\fP
Standard POSIX określa, że ta zmienna wpływa na dopasowanie wzorców
używanych przez opcję \fB\-name\fP. GNU find używa funkcji bibliotecznej
\fBfnmatch\fP(3), w związku z tym obsługa niniejszej zmiennej zależy od
biblioteki systemowej. Zmienna ta wpływa również na interpretację odpowiedzi
na \fB\-ok\fP \- podczas gdy zmienna "LC_MESSAGES" wybiera rzeczywisty wzorzec
używany do interpretacji odpowiedzi na \fB\-ok\fP, interpretacja wyrażeń
klamrowych we wzorcu będzie zależna od "LC_COLLATE"
.IP \fBLC_CTYPE\fP
Zmienna wpływa na traktowanie klas znaków używanych w wyrażeniach
regularnych, jak również w teście \fB\-name\fP, jeśli obsługuje to systemowa
funkcja biblioteczna \fBfnmatch\fP(3). Zmienna wpływa również na interpretację
klas znakowych w wyrażeniach regularnych używanych do interpretacji
odpowiedzi na pytanie wydane przez \fB\-ok\fP. Zmienna środowiskowa "LC_CTYPE"
wpływa również na to, które znaki są uważane za niedrukowalne przy
wypisywaniu nazw plików; patrz rozdział \fBNIETYPOWE NAZWY PLIKÓW\fP.
.IP \fBLC_MESSAGES\fP
Określa język (lokale) komunikatów. Jeśli ustawiona jest zmienna
środowiskowa "POSIXLY_CORRECT", to określa również interpretację na
odpowiedź na pytanie zadane przez akcję \fB\-ok\fP.
.IP \fBNLSPATH\fP
Określa lokalizację katalogów z przetłumaczonymi komunikatami.
.IP \fBPATH\fP
Wpływa na katalogi, które są przeszukiwane przez find w celu wykonania
plików wywołanych przez \fB\-exec\fP, \fB\-execdir\fP, \fB\-ok\fP i \fB\-okdir\fP.
.IP \fBPOSIXLY_CORRECT\fP
Określa rozmiar bloku używany przez \fB\-ls\fP i \fB\-fls\fP. Jeśli ustawiona jest
zmienna \fBPOSIXLY_CORRECT\fP, bloki mają po 512 bajtów. W przeciwnym wypadku \-
1024 bajtów.
.IP
Ustawienie tej zmiennej domyślnie wyłącza również ostrzeżenia
(tzn. implikuje \fB\-nowarn\fP), ponieważ niezależnie od wyniku \fB\-ok\fP, POSIX
wymaga aby wszystkie komunikaty wypisywane na standardowe wyjście błędów
były diagnostyczne i wynikał z nich niezerowy kod zakończenia.
.IP
Gdy POSIXLY_CORRECT nie jest ustawiona, \fB\-perm\fP +zzz jest traktowane jak
\fB\-perm\fP /zzz jeśli +zzz nie jest prawidłowym trybem symbolicznym. Gdy
POSIXLY_CORRECT jest ustawiona, takie konstrukcje są traktowane jako błąd.
.IP
Gdy POSIXLY_CORRECT jest ustawiona, odpowiedź na pytanie zadane przez akcję
\fB\-ok\fP jest interpretowane zgodnie z katalogiem systemowym wiadomości, a nie
zgodnie z własnymi tłumaczeniami komunikatów programu \fBfind\fP.
.IP \fBTZ\fP
Wpływa na strefę czasową używaną przez część związanych z czasem dyrektyw
formatu opcji \fB\-printf\fP i \fB\-fprintf\fP.
.SH PRZYKŁADY
.nf
\fBfind /tmp \-name core \-type f \-print | xargs /bin/rm \-f\fP
.fi
Znajduje pliki o nazwie \fBcore\fP w lub poniżej katalogu \fB/tmp\fP i usuwa
je. Proszę zauważyć, że przykład nie będzie działał poprawnie, jeśli w
którejś z nazw są znaki nowego wiersza, pojedyncze lub podwójne cudzysłowy
lub spacje.
.P
\fBfind /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f\fP
.fi
Znajduje pliki o nazwie \fBcore\fP w lub poniżej katalogu \fB/tmp\fP i usuwa je,
przetwarzając nazwy plików w ten sposób, że nazwy zawierające pojedyncze lub
podwójne cudzysłowy, spacji lub znaki nowego wiersza są obsługiwane
poprawnie. Test \fB\-name\fP jest wykonywany przez \fB\-type\fP, aby zapobiec
wywoływaniu \fBstat\fP(2) na każdym pliku.
.P
.nf
\fBfind . \-type f \-exec file \(aq{}\(aq \e;\fP
.fi
Uruchamia "file" na każdym pliku w lub poniżej katalogu bieżącego. Proszę
zwrócić uwagę, że nawiasy klamrowe są ujęte w pojedyncze cudzysłowy, aby
ochronić je przed interpretację przez interpunkcję skryptów powłoki. Średnik
jest również chroniony, przez odwrotny ukośnik, choć pojedyncze cudzysłowy
byłyby równie dobre.
.P
.nf
\fBfind / \e\fP
\fB\e( \-perm \-4000 \-fprintf /root/suid.txt %#m %u %p\en \e) , \e\fP
\fB\e( \-size +100M \-fprintf /root/big.txt %\-10s %p\en \e)\fP
.fi
Przeszukuje system plików jeden raz, wypisując pliki i katalogi z setuid do
pliku \fB/root/suid.txt\fP, a duże pliki do \fB/root/big.txt\fP.
.P
.nf
\fBfind $HOME \-mtime 0\fP
.fi
Wyszukuje pliki w katalogu domowym użytkownika, które zostały zmodyfikowane
w ciągu ostatnich 24 godzin. To polecenie działa w ten sposób, ponieważ czas
od ostatniej modyfikacji pliku jest podzielony przez 24 godziny, a reszta
jest odrzucana. Oznacza to, że aby pasować do \fB\-mtime 0\fP, plik musiał być
zmodyfikowany mniej niż 24 godziny temu.
.P
.nf
\fBfind /sbin /usr/sbin \-executable \e! \-readable \-print\fP
.fi
Wyszukuje pliki wykonywalne, lecz nieodczytywalne.
.P
.nf
\fBfind . \-perm 664\fP
.fi
Wyszukuje pliki posiadające prawa odczytu i zapisu dla właściciela i grupy,
które dla innych są odczytywalne, lecz nie są zapisywalne. Pliki, które
spełniają te kryteria lecz mają ustawione inne bity praw
(np. wykonywalności) nie są dopasowane.
.P
.nf
\fBfind . \-perm \-664\fP
.fi
Wyszukuje pliki posiadające prawa odczytu i zapisu dla właściciela i grupy,
które dla innych są odczytywalne, bez względu na obecność jakichś
dodatkowych bitów praw (np. bitu wykonywalności). Dopasowany będzie też
np. plik z trybem 0777.
.P
.nf
\fBfind . \-perm /222\fP
.fi
Wyszukuje pliki, które są przez kogoś zapisywalne (dla ich właściciela,
grupy lub innych).
.P
.nf
\fBfind . \-perm /220\fP
\fBfind . \-perm /u+w,g+w\fP
\fBfind . \-perm /u=w,g=w\fP
.fi
Wszystkie trzy polecenia wykonują to samo, lecz pierwsze używa reprezentacji
ósemkowej praw lików, a pozostałe dwa \- postaci symbolicznej. Wszystkie
polecenia wyszukują pliki, które są zapisywalne albo przez ich właściciela,
albo grupę. Pliki nie muszą być zapisywalne zarówno przez właściciela jak i
grupę, aby zostać dopasowane; wystarczy spełnić jeden warunek.
.P
.nf
\fBfind . \-perm \-220\fP
\fBfind . \-perm \-g+w,u+w\fP
.fi
Oba polecenia robią to samo: wyszukują pliki będące zapisywalne zarówno dla
ich właściciela jak i grupy.
.P
.nf
\fBfind . \-perm \-444 \-perm /222 ! \-perm /111\fP
\fBfind . \-perm \-a+r \-perm /a+w ! \-perm /a+x\fP
.fi
Oba polecenia wyszukują pliki odczytywalne dla wszystkich (\fB\-perm \-444\fP lub
\fB\-perm \-a+r\fP), mające ustawiony co najmniej jeden bit zapisu (\fB\-perm /222\fP
lub \fB\-perm /a+w\fP), lecz nie będące wykonywalne dla kogokolwiek (odpowiednio
\fB! \-perm /111\fP i \fB! \-perm /a+x\fP).
.P
.nf
\fBcd /source\-dir\fP
\fBfind . \-name .snapshot \-prune \-o \e( \e! \-name *~ \-print0 \e)|\fP
\fBcpio \-pmd0 /dest\-dir\fP
.fi
Polecenie to kopiuje zawartość \fB/source\-dir\fP do \fB/dest\-dir\fP, lecz pomija
pliki lub katalogi o nazwach \fB.snapshot\fP (i wszystko wewnątrz ich). Pomija
również pliki lub katalogi o nazwach kończących się na \fB~\fP, lecz nie ich
zawartość. Konstrukcja \fB\-prune \-o \e( ... \-print0 \e)\fP jest dość
częsta. Pomysł jest taki, że wyrażenie przed \fB\-prune\fP dopasowuje rzeczy,
które mają być wycięte. Jednak sama akcja \fB\-prune\fP zwraca prawdę, więc
kolejna \fB\-o\fP upewnia się, że prawa strona jest obliczana tylko dla
niewyciętych katalogów (zawartość wycinanych katalogów nie jest nawet
sprawdzana, więc ich zawartość jest nieistotna). Wyrażenie po prawej stronie
\fB\-o\fP, znajduje się w nawiasach jedynie dla przejrzystości. Podkreśla, że
akcja \fB\-print0\fP ma miejsce jedynie do rzeczy, do których nie zastosowano
\fB\-prune\fP. Ponieważ domyślna zależność "and" (i) jest ściślejsza niż \fB\-o\fP,
tak jest domyślnie, lecz nawiasy pomagają pokazać o co chodzi.
.P
.nf
\fBfind repo/ \-exec test \-d {}/.svn \-o \-d {}/.git \-o \-d {}/CVS ; \e\fP
\fB\-print \-prune\fP
.fi
Podając następujący katalog projektu i powiązany katalog administracyjny
SCM, wykonuje wydajne wyszukiwanie korzeni projektów:
.nf
\fBrepo/project1/CVS\fP
\fBrepo/gnu/project2/.svn\fP
\fBrepo/gnu/project3/.svn\fP
\fBrepo/gnu/project3/src/.svn\fP
\fBrepo/project4/.git\fP
.fi
W tym przykładzie, \fB\-prune\fP zapobiega niepotrzebnemu zagłębianiu się w już
odkryte katalogi (np. nie szuka się w project3/src, ponieważ znaleziono już
project3/.svn), lecz znajduje katalogi sąsiednie (project2 i project3).
.SH "KOD ZAKOŃCZENIA"
.PP
\fBfind\fP wychodzi ze statusem 0, gdy pomyślnie przetworzono wszystkie pliki i
większym niż 0, gdy wystąpił błąd. Jest to bardzo ogólny opis, lecz gdy
zwracaną wartością nie jest zero, nie powinno się po prostu polegać na
poprawności wyników \fBfind\fP.
.SH "ZOBACZ TAKŻE"
\fBlocate\fP(1), \fBlocatedb\fP(5), \fBupdatedb\fP(1), \fBxargs\fP(1), \fBchmod\fP(1),
\fBfnmatch\fP(3), \fBregex\fP(7), \fBstat\fP(2), \fBlstat\fP(2), \fBls\fP(1), \fBprintf\fP(3),
\fBstrftime\fP(3), \fBctime\fP(3), \fBFinding Files\fP (on\-line w Info lub w formie
drukowanej).
.SH HISTORIA
Od findutils\-4.2.2, metaznaki powłoki (np. "*", "?" lub "[]") używane we
wzorcach nazw plików dopasują początkowe ".", ponieważ wymaga tego
interpretacja 126 IEEE POSIX.
.P
Składnia \fB\-perm +\fP\fITRYB\fP została uznana za przestarzałą w
findutils\-4.2.21, na korzyść \fB\-perm /\fP\fITRYB\fP. Od findutils\-4.3.3, \fB\-perm
/000\fP dopasowuje wszystkie pliki, zamiast żadnego.
.P
W findutils\-4.3.3 zaimplementowano nanosekundową rozdzielczość znaczników
czasu.
.P
Od findutils\-4.3.11, akcja \fB\-delete\fP ustawia kod zakończenia \fBfind\fP na
wartość niezerową, jeśli się nie powiedzie. \fBfind\fP nie wyjdzie jednak od
razu. Wcześniej, kod zakończenia \fBfind\fP nie zmieniał się pod wpływem
niepowodzenia \fB\-delete\fP.
.TS
l l l .
Funkcja Dodana w Pojawia się też w
\-newerXY 4.3.3 BSD
\-D 4.3.1
\-O 4.3.1
\-readable 4.3.0
\-writable 4.3.0
\-executable 4.3.0
\-regextype 4.2.24
\-exec ... + 4.2.12 POSIX
\-execdir 4.2.12 BSD
\-okdir 4.2.12
\-samefile 4.2.11
\-H 4.2.5 POSIX
\-L 4.2.5 POSIX
\-P 4.2.5 BSD
\-delete 4.2.3
\-quit 4.2.3
\-d 4.2.3 BSD
\-wholename 4.2.0
\-iwholename 4.2.0
\-ignore_readdir_race 4.2.0
\-fls 4.0
\-ilname 3.8
\-iname 3.8
\-ipath 3.8
\-iregex 3.8
.TE
.SH "TO NIE SĄ BŁĘDY"
.nf
\fB$ find . \-name *.c \-print\fP
find: ścieżki muszą poprzedzać wyrażenie
Składnia: %s [\-H] [\-L] [\-P] [\-Opoziom] [\-D help|tree|
search|stat|rates|opt|exec] [ścieżka...] [wyrażenie]
.fi
.P
Powodem takiego zachowania jest interpretacja \fI*.c\fP przez powłokę, co
skutkuje następującym poleceniem otrzymanym przez program \fBfind\fP.
.nf
\fBfind . \-name bigram.c code.c frcode.c locate.c \-print\fP
.fi
To polecenie oczywiście nie będzie działać. Poprawną metodą jset ujęcie
wzorca w cudzysłowy lub zacytowanie maski:
.nf
\fB$ find . \-name \e*.c \-print\fP
.fi
.SH BŁĘDY
.P
Występują pewne zagrożenia związane z bezpieczeństwem, będące wynikiem tego,
co standard POSIX przewiduje dla \fBfind\fP \- dlatego nie mogą być
naprawione. Na przykład akcja \fB\-exec\fP jest niebezpieczna i powinno się
używać w zamian \fB\-execdir\fP. Proszę zapoznać się z \fBFinding Files\fP, aby
dowiedzieć się więcej.
.P
Zmienna środowiskowa \fBLC_COLLATE\fP nie ma wpływu na akcję \fB\-ok\fP.
.P
Najlepszą drogą do zgłoszenia błędu jest użycie formularza na stronie
http://savannah.gnu.org/bugs/?group=findutils. Możliwe jest wówczas
śledzenie postępu naprawiania błędu. Pozostałe komentarze dotyczące
\fBfind\fP(1) i ogólnie, nt. pakietu findutils, można wysyłać na listę
dyskusyjną \fIbug\-findutils\fP. Aby się na nią zapisać, proszę wysłać list
elektroniczny na adres \fIbug\-findutils\-request@gnu.org\fP.
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są:
Przemek Borys (PTM) <pborys@dione.ids.pl>
i
Michał Kułach <michal.kulach@gmail.com>.
.PP
Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 4.4.2 \fPoryginału.
|