1.用for靈活,文件名中字符替換,加日期等都可
創(chuàng)新互聯(lián)公司從2013年開始,先為沙灣等服務(wù)建站,沙灣等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為沙灣企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
先用下面語句測試一下
for
i
in
*aa*
;do
NN=$(echo
$i
|
sed
's/aa/bb/')
;echo
"$NN";done
保險起見,只拷貝
for
i
in
*aa*
;do
NN=$(echo
$i
|
sed
's/aa/bb/')
;cp
"$i"
"$NN";done
這是更名,慎用
for
i
in
*aa*
;do
NN=$(echo
$i
|
sed
's/aa/bb/')
;mv
"$i"
"$NN";done
2.用rename簡潔
先用-n
開關(guān)測試
rename
-n
's/aa/bb/'
*
測試無誤去掉-n進行更名
rename
's/aa/bb/'
*
linux批量替換多個文件中字符串linux下批量替換多個文件中的字符串的簡單方法。用sed命令可以批量替換多個文件中的字符串。
用sed命令可以批量替換多個文件中的字符串。sed
-i
s/原字符串/新字符串/g
`grep
原字符串
-rl
所在目錄`例如:我要把mahuinan替換為huinanma,執(zhí)行命令:sed
-i
s/mahuinan/huinanma/g
'grep
mahuinan
-rl
/www'這是目前l(fā)inux最簡單的批量替換字符串命令了!具體格式如下:sed
-i
s/oldString/newString/g
`grep
oldString
-rl
/path`實例代碼:sed
-i
s/大小多少/日月水火/g
`grep
大小多少
-rl
/usr/aa`sed
-i
s/大小多少/日月水火/g
`grep
大小多少
-rl
./`
1. sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' csv2drds-TF_B_PAYLOG_D.json
---指定文件替換,將文件中的CANCEL_TIME替換成CANCEL_RECV_TIME;
2.?sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' `grep CANCEL_TIME -rl ./*TF_B_PAYLOG_D*.json`
---批量文件替換,遞歸查找含CANCEL_TIME的文件,將所有文件中的CANCEL_TIME替換成CANCEL_RECV_TIME;
3. sed -i 's/\/tmp\/ditagent\/TF_B_PAYLOG_D.csv/\/vdata\/datapre\/281\/'"$filename"'/g' $jsonname
---帶/的字符串替換,將/tmp/ditagent/TF_B_PAYLOG_D.csv替換成/vdata/datapre/281/'"$filename"'
4.?sed -i 's/^/beginstring/g' *.txt
---在所有行首添加字符串;
5.??sed -i 's/$/endstring/g' *.txt
---在所有行末添加字符串
6. sed -i '2s/原字符串/替換字符串/g' *.txt
---替換第2行
7. sed -i?'$s/原字符串/替換字符串/g'?*.txt
---替換最后一行
8. sed?-i? '2,5s/原字符串/替換字符串/g'?*.txt
---替換2到5行
9. sed -i? '2,$s/原字符串/替換字符串/g'?*.txt
---替換2到最后一行
10. sed 's/\x80/|/g' test.dat |iconv -f gbk -t utf-8 testutf8.dat
---把test.dat中的歐元符號替換成豎線,再將文件gbk格式轉(zhuǎn)成utf8
-i選項是直接在文件中替換,不在終端輸出;
-r選項是所給的path中的目錄遞歸查找;
-l選項是輸出所有匹配到oldstring的文件;
s/表示替換
/g表示全局替換
Linux下批量替換多個文件中的字符串的簡單方法。用sed命令可以批量替換多個文件中的字符串。
命令如下:
sed -i "s/原字符串/新字符串/g" grep 原字符串 -rl 所在目錄
例如:我要把www目錄下的所有文件里的 charset=gb2312 替換為 charset=UTF-8,執(zhí)行命令:
sed -i "s/charset=gb2312/charset=UTF-8/g" `grep charset=gb2312 -rl /www`
即可。
解釋一下:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目錄
-l 表示輸出匹配的文件名
這個命令組合很強大,要注意備份文件。
shell編程中替換文件中的內(nèi)容用到四個命sed,find
,grep,awk
下面是三種使用替換的方法
方法一:find
-name
'要查找的文件名'
|
xargs
perl
-pi
-e
's|被替換的字符串|替換后的字符串|g'下面這個例子就是將當(dāng)前目錄及所有子目錄下的所有pom.xml文件中的”“
替換為”“.
find
-name
'pom.xml'
|
xargs
perl
-pi
-e
's|
/groups/public|g'這里用到了Perl語言,
perl
-pi
-e
在Perl
命令中加上-e
選項,后跟一行代碼,那它就會像運行一個普通的Perl
腳本那樣運行該代碼.
從命令行中使用Perl
能夠幫助實現(xiàn)一些強大的、實時的轉(zhuǎn)換。認真研究正則表達式,并正確地使用,將會為您省去大量的手工編輯工作。
find
-name
'pom.xml'
|
xargs
perl
-pi
-e
's|'
方法二:Linux下批量替換多個文件中的字符串的簡單方法。用sed命令可以批量替換多個文件中的字符串。
用sed命令可以批量替換多個文件中的
字符串。
sed
-i
"s/原字符串/新字符串/g"
`grep
原字符串
-rl
所在目錄`
例如:我要把mahuinan替換
為huinanma,執(zhí)行命令:
sed
-i
"s/mahuinan/huinanma/g"
'grep
mahuinan
-rl
/www'
這是目前l(fā)inux最簡單的批量替換字符串命令了!
具體格式如下:
sed
-i
"s/oldString/newString/g"
`grep
oldString
-rl
/path`
實例代碼:sed
-i
"s/大小多少/日月水火/g"
`grep
大小多少
-rl
/usr/aa`
sed
-i
"s/大小多少/日月水火/g"
`grep
大小多少
-rl
./`
方法三:在日程的開發(fā)過程中,可能大家會遇到將某個變量名修改
為另一個變量名的情況,如果這個變量是一個局部變量的話,vi足以勝任,但是如果是某個全局變量的話,并且在很多文件中進行了使用,這個時候使用vi就是
一個不明智的選擇。這里給出一個簡單的shell命令,可以一次性將所有文件中的指定字符串進行修改:
grep
"abc"
*
-R
|
awk
-F:
$1}'
|
sort
|
uniq
|
xargs
sed
-i
's/abc/abcde/g'
批量替換
配置文件中的IP:
grep
"[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
*
-R
|
awk
-F:
$1}'
|
sort
|
uniq
|
xargs
sed
-i
's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/172\.0\.0\.1/g'
Linux下修改文件名有mv和rename。 其中mv命令只能對單個文件重命名 , 這是mv命令和rename命令的在重命名方面的根本區(qū)別。
linux的rename命令有兩個版本,一個是c語言版本的,一個是perl語言版本的,判斷方法:
輸入man rename 看到第一行是:
RENAME(1) Linux Programmer’s Manual RENAME(1)
這個就是C語言版本的
而如果出現(xiàn):
RENAME(1) Perl Programmers Reference Guide RENAME(1) 則是Perl版本的了
C語言版本格式:rename 原字符串 新字符串 文件名
Perl語言版本格式:rename 's/原字符串/新字符串/' 文件名
rename支持正則表達式
例子:
字母的替換 rename "s/AA/aa/" * // 把文件名中的AA替換成aa
修改文件的后綴 rename "s//.html//.php/" * // 把.html 后綴的改成 .php后綴
批量添加文件后綴 rename "s/$//.txt/" * // 把所有的文件名都以txt結(jié)尾
批量刪除文件名 rename "s//.txt//" * // 把所有以.txt結(jié)尾的文件名的.txt刪掉
在文件夾shell下創(chuàng)建文件10個文件
touch tmp_{1..10}.txt
找到含有“_“”的文件夾。
find ./ -name "*_*"
讀取id, 用mv改名,$為自己理解為賦值后的id,格式為