作者 主題: script 關於讀出所有的robots.txt 並請echo 一段進去  (閱讀 3729 次)

0 會員 與 1 訪客 正在閱讀本文。

LPJ

  • 懷疑的國中生
  • **
  • 文章數: 81
    • 檢視個人資料
因為不想看到http-error內的找不到robots.txt錯誤訊息,已經將所有的站台建立好robots.txt
代碼: [選擇]
find /home/ -name public_html -type d -print -exec touch {}/robots.txt \;

接下來我將編輯每個robots.txt的內容,但是不想每個檔案進去改(vi robots.txt)

這是我認為邏輯覺得可以寫成以下的script但是還是無法正確將echo 值寫入每個robots.txt

代碼: [選擇]
#!/usr/local/bin/bash
x=0
list=`find /home/ -name robots.txt`
for i in ${list}
do
x=`echo 'User-Agent: *' >> ${list}`
done



第二方式 仍然失敗,他會將 {}視為檔案,而非找到的結果

代碼: [選擇]
find /home/ -name robots.txt -exec echo "User-Agent: *" > {} \;



兩個執行後皆沒有錯誤訊息,請各位老師指點迷津

LPJ

  • 懷疑的國中生
  • **
  • 文章數: 81
    • 檢視個人資料
換個方式,已經ok.. 不想用echo 的方式。
先建立好robots.txt然後cp過去
find /home/ -name public_html -type d -print -exec cp robots.txt {}/robots.txt \;

其實還是很希望在第一篇的問題獲得答案...

willie0220

  • 憂鬱的高中生
  • ***
  • 文章數: 142
    • 檢視個人資料
你的第一個方式可以合併為:
代碼: [選擇]

#!/bin/bash
for i in $(find /home/ -name public_html -type d);do
  echo 'User-Agent: *' > $i/robots.txt
done


至於第二個方法,會錯的原因是因為在開始跑find之前,">"就已經先被shell處理了,以致於會失敗。