2016-10-12 41 views
0

我上傳到主機list.txt與受感染文件的列表。它看起來像這樣:修改for循環中的文件

file1.php 
file2.php 
cat/file3.php 
cat/subcat/file4.php 

受感染的文件僅在第1行中被修改。所以我運行for循環。此循環必須將具有惡意代碼的整個第一行更改爲<?php

for file in $(cat list.txt); do sed -i '1s/.*/<?php/' *.php; done 

問題是循環似乎只在第一個文件夾(file1和file2)中更改文件。子文件夾中的文件不會更改。任何想法我做錯了什麼?

回答

0

這是因爲在sed命令中,您並未真正使用循環中定義的變量。 嘗試

for file in $(cat list.txt); do sed -i '1s/.*/<?php/' $file; done 
+0

Works Great!感謝gile。 – Rob

+0

P.S.有沒有辦法在除一個文件夾以外的所有文件夾中運行此循環,例如。/user – Rob

+0

for $(egrep -v'user /'list.txt); do sed -i'1s /.*/ <?php /'$ file;完成 – gile