4

Я пытаюсь использовать xargs для манипулирования набором файлов.

Файл с именем filelist.txt содержит имена файлов

john 
paul 
george
ringo
steve 

Я могу создать все эти файлы с помощью этой команды:

cat filelist.txt | xargs touch

Как добавить один и тот же текст «привет» к каждому файлу в списке? Кроме того, как бы я добавил текст, основанный на имени файла .. т.е. «имя: Стив» в файл Стива?

2 ответа2

4

Добавить hello каждому файлу:

cat filelist.txt | while read line; do echo hello >> $line; done

Добавить имя файла к каждому файлу:

cat filelist.txt | while read line; do echo $line >> $line; done
0

Я пометил @ steven's как правильный, потому что, возможно, он более читабелен, но мне было любопытно, какое решение использует xargs . Вот что я нашел:

cat filelist.txt | xargs -I $0 sh -c "echo 'hello' > $0"
cat filelist.txt | xargs -I $0 sh -c "echo 'hello $0' > $0"

-I $0 означает заменить $0 в следующей строке. Вы можете использовать что-то более читаемое, например, $NAME или person_name и т.д. sh -c выполняет команду в строке. Не уверен, зачем это нужно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .