我正在尋找一個bash腳本,它將使用通配符路徑來搜索特定文件,一旦它發現文件名搜索文件內部然後替換它。bash腳本搜索文件,並替換如果使用通配符找到文件內的字符串
這裏就是我已經把不已:
#!/bin/sh
PATH=${1}
FILENAME="$2"
SEARCHFOR="$3"
/usr/bin/clear
echo "Searching $PATH"
echo "For the file $FILENAME"
echo "With the string $SEARCHFOR"
echo "=========================="
echo " RESULTS "
echo "=========================="
/usr/bin/find $PATH -type f -name "$FILENAME" | /usr/bin/xargs /bin/grep -l "$SEARCHFOR"
我還沒有添加更換,但是我想我會用SED替代grep來做到這一點,只是用grep用於測試目的。
有了上面的代碼,我必須使用任何類型的通配符路徑的引號。有沒有解決的辦法?
./script '/home/*/public_html' php.ini module.so
我在想也許使用參數,但有一種方法可以做到這一點。
我的最終目標是讓bash腳本可以傳遞通配符路徑或文件名,它會搜索該文件,一旦找到文件搜索特定術語並在發現後替換它。
聽起來那麼簡單,它應該是但我敲我的頭靠在桌上,因爲它已經這麼長時間,因爲我已經與慶典搞砸... aaggghh幫助!
附註:定義'$ PATH'會覆蓋由shell定義的'PATH'變量,該變量告訴它要查看哪些文件夾在運行命令時。例如,當你鍵入'python myscript.py'時,shell在'$ PATH'中搜索分號分隔的目錄中的名爲'python'的可執行文件並使用它 - 它不需要鍵入'/ usr/bin/python myscript.py'。通過覆蓋它,您可能會破壞跟隨定義的腳本部分。 TLDR:您應該考慮爲變量使用不同的名稱。 – jedwards
作爲一個後續,這就是爲什麼你必須寫'/ usr/bin/clear'而不是隻是'clear'和William Pursell的答案背後的推理。 – jedwards