Быстрый и грязный подход, может удовлетворить ваши требования.
grep . *|perl -ne 'if(/FirstName: (.*)/){$f=$1}if(/City: (.*)/){$c=$1}if(/^(.*):Zip: (.*)/){print "$1,$f,$c,$2\n"}'
Пример:
grep . *
f1.txt:FirstName: Mary
f1.txt:LastName: Smith
f1.txt:Address: 123 Anywhere St
f1.txt:City: Nowhere
f1.txt:State: TX
f1.txt:Zip: 77777
f2.txt:FirstName: Joe
f2.txt:LastName: Bloggs
f2.txt:Address: 444 Anywhere St
f2.txt:City: Nowhere2
f2.txt:State: TXA
f2.txt:Zip: 77737
grep . *|perl -ne 'if(/FirstName: (.*)/){$f=$1}if(/City: (.*)/){$c=$1}if(/^(.*):Zip: (.*)/){print "$1,$f,$c,$2\n"}'
f1.txt,Mary,Nowhere,77777
f2.txt,Joe,Nowhere2,77737
Вы просто не можете, так как cp
не имеет функции мониторинга.
Вопрос SE, на который вы ссылаетесь, зависит от файловой системы, которая не является вашим случаем. Как какое-либо приложение может знать, что представляют собой фактические данные, а не случайный мусор, присутствующий на диске?
dd будет более подходящим инструментом для работы в этом случае, и если вы используете средство просмотра каналов, вы можете передать через него команду dd. например
dd if=debian-testing-amd64-DVD-1.iso | пв | dd of=/dev/sdb
Если вы используете параметр --size/-s и указываете приблизительный размер, он также попытается указать приблизительное время.
dd if=debian-testing-amd64-DVD-1.iso | пв-с 3G | дд =/dev/sdb