výsledek příkazu můžete vložit pomocí $()
,takže můžete sledovat
$ pdfunite $(ls -v *.pdf) output.pdf
nebo
$ pdfunite $(ls *.pdf | sort -n) output.pdf
Mějte však na paměti, že to nefunguje, pokud název souboru obsahuje speciální znak, jako je mezera.
V takovém případě můžete provést následující:
ls -v *.txt | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" output.pdf'
I když se to zdá trochu komplikované, je to jen kombinace
- Bash:Přečte souborový řádek oddělený tabulátory do pole
- vytvářejte seznamy argumentů obsahující mezery
- Jak uniknout jednoduchým uvozovkám v řetězcích s jednoduchými uvozovkami?
Pamatujte, že nemůžete použít xargs
od pdfunite
vyžaduje vstupní pdf jako střed argumentů. Vyhnul jsem se použití readarray
protože to není podporováno ve starší verzi bash, ale můžete ho použít místo IFS=.. read -ra ..
pokud máte novější bash
.
jak najít cestu k linuxovému modulu
Jak získat výstupní kód vytvořeného procesu ve skriptu očekávaného shellu?