Добавить текст в список файлов

472
cannyboy

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

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

john  paul  george ringo steve  

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

cat filelist.txt | xargs touch 

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

4

2 ответа на вопрос

4
Steven

Append hello to each file:

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

Append filename to each file:

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

I've marked @steven's as correct because it's perhaps more readable, but I was curious about a solution which used xargs. This is what I found:

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

The -I $0 means replace $0 in the upcoming string. You could use something more readable like $NAME or person_name etc. sh -c performs the command in a string. Not sure why that's needed.