Вы можете использовать xargs
.Что нужно сделать, это взять в каждой строке «файла A» (взятого из cat
) и выполнить данную команду (xyz.pl
) с этими данными в качестве аргумента.
cat 'file A' | xargs -I{} xyz.pl '{}'
Это говорит о том, что{}
- это то место, куда должен идти аргумент, и вставляет его после xyz.pl
.Это делает его более гибким в случае, если вы захотите изменить команду в будущем.
Обратите внимание, что данное решение будет работать только при условии, что в каждом имени файла нет пробелов.
Редактировать: Подождите, кажется, для меня это работает с пробелами ...
Редактировать: Если это не работает во всех случаях, вотПример:
xyz.pl :
#!/usr/bin/perl
print "Perl processing: $ARGV[0]\n";
one.txt
/filea
/fileb
/filec
Запуск:
$ cat one.txt | xargs -I{} ./xyz.pl '{}'
Perl processing: /filea
Perl processing: /fileb
Perl processing: /filec