Możesz połączyć łańcuchowo połączenia, aby znaleźć (raz, kiedy dowiesz się, że jest to możliwe, co może być dzisiaj). Jest to oczywiście możliwe tylko tak długo, jak długo będziesz w znalezieniu. Gdy potokujesz do xargs, jest on poza zasięgiem.
Mały przykład, dwa pliki a.lst i b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Żadna sztuczka tutaj - po prostu fakt, że oba zawierają „fuddel”, ale tylko jeden zawiera „fiddel”.
Załóżmy, że o tym nie wiedzieliśmy. Szukamy pliku, który spełnia 2 warunki:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Cóż, być może znasz składnię grep lub innego programu, aby przekazać oba ciągi jako warunek, ale nie o to chodzi. Można tutaj użyć każdego programu, który może zwrócić wartość true lub false, podając plik jako argument - grep był tylko popularnym przykładem.
I pamiętaj, że możesz znaleźć find -exec za pomocą innych poleceń find, takich jak -ls lub -delete lub coś podobnego. Zauważ, że usunięcie nie tylko robi rm (usuwa pliki), ale także rmdir (usuwa katalogi).
Taki łańcuch jest odczytywany jako kombinacja ORAZ, o ile nie określono inaczej (mianowicie -or
przełącznikiem (i parenami (które wymagają maskowania))).
Więc nie opuszczasz łańcucha wyszukiwania, co jest przydatne. Nie widzę żadnej korzyści z używania -xargs, ponieważ musisz uważać na przekazywanie plików, co jest czymś, czego nie trzeba robić - automatycznie obsługuje przekazywanie każdego pliku jako pojedynczego argumentu.
Jeśli uważasz, że potrzebujesz maskowania dla znalezionych aparatów ortodontycznych {} , odwiedź moje pytanie, które wymaga dowodów. Moje twierdzenie brzmi: nie.
find
. Wielkie dzięki!