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
Я пытаюсь использовать xargs для манипулирования набором файлов.
Файл с именем filelist.txt содержит имена файлов
john paul george ringo steve
Я могу создать все эти файлы с помощью этой команды:
cat filelist.txt | xargs touch
Как добавить один и тот же текст «привет» к каждому файлу в списке? Кроме того, как бы я добавил текст, основанный на имени файла .. т.е. «имя: Стив» в файл Стива?
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
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.