//批量移動
# find ./ -name "*.tar.gz" | xargs -i mv {} ./test/
//批量解壓
# ls *.tar.gz | xargs -n1 tar xzvf
解壓縮
文章轉(zhuǎn)自Linux下的tar壓縮解壓縮命令詳解
tar
-c: 建立壓縮檔案
-x:解壓
-t:查看內(nèi)容
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
這五個是獨立的命令,壓縮解壓都要用到其中一個迟螺,可以和別的命令連用但只能用其中一個帝牡。下面的參數(shù)是根據(jù)需要在壓縮或解壓檔案時可選的叔遂。
-z:有g(shù)zip屬性的
-j:有bz2屬性的
-Z:有compress屬性的
-v:顯示所有過程
-O:將文件解開到標(biāo)準(zhǔn)輸出
下面的參數(shù)-f是必須的
-f: 使用檔案名字,切記羹蚣,這個參數(shù)是最后一個參數(shù)哗总,后面只能接檔案名。
# tar -cf all.tar *.jpg這條命令是將所有.jpg的文件打成一個名為all.tar的包镜会。-c是表示產(chǎn)生新的包,-f指定包的文件名终抽。
# tar -rf all.tar *.gif這條命令是將所有.gif的文件增加到all.tar的包里面去戳表。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif這條命令是更新原來tar包all.tar中l(wèi)ogo.gif文件昼伴,-u是表示更新文件的意思匾旭。
# tar -tf all.tar這條命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar這條命令是解出all.tar包中所有文件圃郊,-t是解開的意思
由于Linux的tar命令不支持批量解壓价涝,所以很多網(wǎng)友編寫了好多支持批量解壓的shell命令,收集了一下持舆,供大家分享:
第一:
for tar in *.tar.gz; do tar xvf $tar; donefor tar in *.tar.bz2; do tar xvf $tar; done
第二: 用tar命令批量解壓某個文件夾下所有的tar.gz文件
ls *.tar.gz | xargs -n1 tar xzvf
第三:
find -maxdepth 1 -name "*.bz2"|xargs -i tar xvjf {}
這條命令可解壓當(dāng)前目錄下的所有bz2文件
批量解壓是比較郁悶的事色瘩,以前嘗試各種方法,甚至用腳本循環(huán)語句解壓都不行
現(xiàn)在發(fā)現(xiàn)這條命令可以搞定逸寓,maxdepth表示搜索深度居兆,1代表只搜索當(dāng)前目錄 第四:
for i in $(ls *.tar);do tar xvf $i;done
問題: 我想進(jìn)行批量解壓tar文件,使用tar -xvf .tar會出錯竹伸,提示“Not found in archive”泥栖。解決方法有很多,比如寫一個腳本之類的勋篓。 請問為什么tar不支持這種通配符語法呢吧享?是否有特殊的原因? 我試過gzip就支gzip -d.tar.gz譬嚣。 回答: 通配符是shell解決的問題 如 tar -xvf .tar 實際上執(zhí)行tar時钢颂,tar接收到的是 tar -xvf a.tar b.tar c.tar … 如果當(dāng)前目錄跟本沒有tar的東西,那么tar就收到’.tar’這個參數(shù) 與win不同拜银,linux所有字符都可以作文件名殊鞭,也即目錄中不存在著 *.tar這個文件 為了防止 *.tar被shell解釋為a.tar b.tar c.tar… 可以給它加個單引號
用tar解開一個Archive時,語法是 tar -xvf <tarfile.tar> <tarfile.tar> 是選項f所要求的盐股,只能是一個文件钱豁,比如myfiles.tar耻卡。 是myfiles.tar所包含的歸了檔的文件中的一個或者多個成員文件疯汁。如果是多個,可以用通配符卵酪。 先別跟我急幌蚊,我知道谤碳,這些你是清楚的。但是溢豆,你的問題是蜒简,用了 tar -xvf *.tar 如樓上所說,tar接收到的是 tar -xvf a.tar b.tar c.tar … tar把你的意圖理解為漩仙,在a.tar里解出b.tar c.tar …
壓縮
tar -cvf jpg.tar *.jpg //將目錄里所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg //將目錄里所有jpg文件打包成jpg.tar后搓茬,并且將其用gzip壓縮,生成一個gzip壓縮過的包队他,命名為jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //將目錄里所有jpg文件打包成jpg.tar后卷仑,并且將其用bzip2壓縮,生成一個bzip2壓縮過的包麸折,命名為jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg //將目錄里所有jpg文件打包成jpg.tar后锡凝,并且將其用compress壓縮,生成一個umcompress壓縮過的包垢啼,命名為jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的壓縮窜锯,需要先下載rar for linux
zip jpg.zip *.jpg //zip格式的壓縮,需要先下載zip for linux
解壓
tar -xvf file.tar //解壓 tar包
tar -xzvf file.tar.gz //解壓tar.gz
tar -xjvf file.tar.bz2 //解壓 tar.bz2
tar -xZvf file.tar.Z //解壓tar.Z
unrar e file.rar //解壓rar
unzip file.zip //解壓zip
總結(jié)
1芭析、.tar 用 tar -xvf 解壓
2锚扎、.gz 用 gzip -d或者gunzip 解壓
3、.tar.gz和.tgz 用 tar -xzf 解壓
4放刨、.bz2 用 bzip2 -d或者用bunzip2 解壓
5工秩、.tar.bz2用tar -xjf 解壓
6、.Z 用 uncompress 解壓
7进统、.tar.Z 用tar -xZf 解壓
8助币、.rar 用 unrar e解壓
9、.zip 用 unzip 解壓
VI下查找
文章轉(zhuǎn)載自Linux vi中查找字符內(nèi)容的方法
使用vi編輯器編輯長文件時螟碎,常常是頭昏眼花眉菱,也找不到需要更改的內(nèi)容。
這時掉分,使用查找功能尤為重要俭缓。
方法如下:
1、命令模式下輸入“/字符串”酥郭,例如“/Section 3”华坦。
2、如果查找下一個不从,按“n”即可惜姐。
要自當(dāng)前光標(biāo)位置向上搜索,請使用以下命令:
/pattern Enter
其中,pattern表示要搜索的特定字符序列歹袁。
要自當(dāng)前光標(biāo)位置向下搜索坷衍,請使用以下命令:
?pattern Enter
按下 Enter鍵后,vi 將搜索指定的pattern条舔,并將光標(biāo)定位在 pattern的第一個字符處枫耳。例如,要向上搜索 place一詞孟抗,請鍵入:
vi 查找替換大全
vi/vim 中可以使用 :s 命令來替換字符串迁杨。以前只會使用一種格式來全文替換,今天發(fā)現(xiàn)該命令有很多種寫法(vi 真是強大啊凄硼,還有很多需要學(xué)習(xí))仑最,記錄幾種在此,方便以后查詢帆喇。
:s/vivian/sky/ 替換當(dāng)前行第一個 vivian 為 sky
:s/vivian/sky/g 替換當(dāng)前行所有 vivian 為 sky
:n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個 vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky
n 為數(shù)字警医,若 n 為 .,表示從當(dāng)前行開始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
可以使用 # 作為分隔符坯钦,此時中間出現(xiàn)的 / 不會作為分隔符
:s#vivian/#sky/# 替換當(dāng)前行第一個 vivian/ 為 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/
1.:s/vivian/sky/ 替換當(dāng)前行第一個 vivian 為 sky
:s/vivian/sky/g 替換當(dāng)前行所有 vivian 為 sky
- :n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個 vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky
(n 為數(shù)字预皇,若 n 為 .,表示從當(dāng)前行開始到最后一行) - :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky - 可以使用 # 作為分隔符婉刀,此時中間出現(xiàn)的 / 不會作為分隔符
:s#vivian/#sky/# 替換當(dāng)前行第一個 vivian/ 為 sky/ - 刪除文本中的^M
問題描述:對于換行,window下用回車換行(0A0D)來表示吟温,Linux下是回車(0A)來表示。這樣突颊,將window上的文件拷到Unix上用時鲁豪,總會有個^M.請寫個用在unix下的過濾windows文件的換行符(0D)的shell或c程序。
· 使用命令:cat filename1 | tr -d “VM” > newfile律秃;
· 使用命令:sed -e “s/VM//” filename > outputfilename爬橡。需要注意的是在1、2兩種方法中棒动,V和M指的是Ctrl+V和Ctrl+M糙申。你必須要手工進(jìn)行輸入,而不是粘貼船惨。
· 在vi中處理:首先使用vi打開文件柜裸,然后按ESC鍵,接著輸入命令:%s/VM//粱锐。
· :%s/^M$//g
如果上述方法無用疙挺,則正確的解決辦法是:
· tr -d "r" < src >dest
· tr -d "15" dest
· strings A>B - 其它
利用 :s 命令可以實現(xiàn)字符串的替換。具體的用法包括:
:s/str1/str2/ 用字符串 str2 替換行中首次出現(xiàn)的字符串 str1
:s/str1/str2/g 用字符串 str2 替換行中所有出現(xiàn)的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替換正文當(dāng)前行到末尾所有出現(xiàn)的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現(xiàn)的字符串 str1
:g/str1/s//str2/g 功能同上
從上述替換命令可以看到:g 放在命令末尾怜浅,表示對搜索字符串的每次出現(xiàn)進(jìn)行替換铐然;不加 g,表示只對搜索
字符串的首次出現(xiàn)進(jìn)行替換;g 放在命令開頭锦爵,表示對正文中所有包含搜索字符串的行進(jìn)行替換操作。