Do czego służy polecenie + in find / path / -exec „{}” +?


13

Co jest +w find /path/ -exec command '{}' +zrobienia? w przeciwieństwie dofind /path/ -exec command '{}' \;

Odpowiedzi:


17

„+” Tworzy jeden duży wiersz poleceń ze wszystkich znalezionych plików, aby zminimalizować liczbę poleceń do uruchomienia.

Biorąc pod uwagę przypadek, że polecenie find znajdzie cztery pliki.

find . -type f -exec command '{}' \;

produkuje

command file1
command file2
command file3
command file4 

Z drugiej strony

find . -type f -exec command '{}' \+

produkuje

command file1 file2 file3 file4

3
Jeśli wiesz xargs, -exec … {} +robi to samo -print | xargs …, ale bez problemów z cytowaniem ( -print0 | xargs -0jest inny sposób, ale jest mniej przenośny).
Gilles „SO- przestań być zły”

4

Ze strony podręcznika:

-exec polecenie {} +

Ten wariant akcji -exec uruchamia określone polecenie na wybranych plikach, ale linia poleceń jest budowana przez dołączenie każdej wybranej nazwy pliku na końcu; całkowita liczba wywołań polecenia będzie znacznie mniejsza niż liczba dopasowanych plików. Wiersz poleceń jest budowany w taki sam sposób, jak xargs buduje wiersze poleceń. W poleceniu dozwolona jest tylko jedna instancja „{}”. Polecenie jest wykonywane w katalogu startowym.


1
człowiek, który jest bardzo ... zwięzły? Uważam, że brakuje mu głębi i jasności.
Xenoterracide

Pomysł nie polega na ślepym spawnowaniu jednego procesu dla każdego pliku, ale na zebraniu razem nazw plików i wywołaniu polecenia mniej razy. Przykład: zamiast tworzyć 3 różne procesy „rm FILENAME”, zbiera nazwy plików i robi „rm FILE1 FILE2 FILE3”.
tante

IIRC niektóre wersje xargs mają opcję grupowania tych nazw razem do określonego limitu, więc możesz z tego skorzystać, ale także uniknąć przepełnienia, gdy masz dużą listę.
Kevin Cantu,

(Sam w sobie jest przerażającym, małym językiem!)
Kevin Cantu

finddaje mi pół.
Matt Alexander
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.