2011-10-17 78 views
2

我需要這行添加到位於每個對應的.htaccess文件中的/home/*/site/assets/.htaccess 其中*可我需要找到這個文本深搜索和內特定的htaccess文件替換 - linux的

目錄的任何量

RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] 

,並添加一行上方,或與此

RewriteCond %{REQUEST_URI} !^/site/assets/sym 
RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] 

我在這個site網上看了取代它,但我一個米還不清楚如何處理

  1. 產生我想編輯(於是找到匹配這個路徑的所有文件:/home/*/site/assets/.htaccess)的文件列表
  2. 添加換行符在替換文字

任何人都可以提出一個資源,將清楚地解釋它,或失敗,讓我知道,如果我正在看這個工作的正確工具?

我的操作系統是OS美分5.5,我正在如果使多大區別一個LAMP服務器,Apache的2

感謝

回答

2
#!/bin/bash 

類似的東西:

for dir in `find /home -type d | grep 'site/assets'` 
do 
    htaccess="$dir/.htacess"; 
    sed -ibak -e '[email protected] \^\(.*\)\$ /site/assets/sym/\$1 \[L,NS\]@RewriteCond %{REQUEST_URI} !^/site/assets/sym\n\[email protected]' $htaccess 
done 

在我的盒子上:

sed -e '[email protected] \^\(.*\)\$ /site/assets/sym/\$1 \[L,NS\]@RewriteCond %{REQUEST_URI} !^/site/assets/sym\n\[email protected]' test 
Foobarlol 

RewriteCond %{REQUEST_URI} !^/site/assets/sym 
RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] 
RewriteRule ^(.*)$ /site/assets/test/$1 [L,NS] 

Bleh 

test

Foobarlol 

RewriteRule ^(.*)$ /site/assets/sym/$1 [L,NS] 
RewriteRule ^(.*)$ /site/assets/test/$1 [L,NS] 

Bleh 
+0

LS的無用使用在反引號http://partmaps.org/era/unix/award.html - 你的意思是'用於在/ home目錄/ *'簡單明瞭。 – tripleee

+0

...但這也無法找到子目錄。你需要'找到'來緩解。 – tripleee

+0

@tripleee沒用,我不確定,因爲我不想要任何文件坐在家裏只是目錄和子目錄,我誤解了OP。感謝您的意見。 – 2011-10-17 19:53:14