/ / Použitie xargov so špeciálnymi znakmi - linux, bash, xargs

Použitie xargov so špeciálnymi znakmi - linux, bash, xargs

Mám nasledujúci problém. Mám súbor, ktorý obsahuje určité cesty / súbory FS. Z nejakého dôvodu zahŕňajú celú škálu špeciálnych znakov, ako sú medzery, jednoduché alebo dvojité úvodzovky, niekedy aj autorské práva ASCII.

Musím spustiť každý riadok súboru a odovzdať ho inému príkazu.

To, čo som doteraz skúšal, je:

<input_file xargs -I % command %

Čo fungovalo, až kým som nedostal túto správu od xargsov

xargs: unmatched single quote; by default quotes are special to xargs unless you use the -0 option

Ale táto možnosť pre mňa vôbec nefungovala

xargs: argument line too long

Má niekto riešenie, ktoré funguje dobre so špeciálnymi postavami. Nemusí to byť s xargs, ale musím prejsť čiaru tak, ako je to na príkaz.

Mnohokrát ďakujem vopred.

odpovede:

1 pre odpoveď č. 1

Mali by ste oddeliť názvy súborov NULL znak na spracovanie.

To sa dá urobiť s

find . <args> -print0 | xargs -0

alebo ak musíte spracovať súbor s názvami súborov, zmeňte „n“ na „

tr "n" "" < filename | xargs -0 -n1 -I% echo "==%=="

na -n 1 hovorí:

-n max-args Na každý príkazový riadok použite najviac argumentov max-args.

a mali by ste ich používať "%" úvodzovky %