Linux基礎(chǔ)

//批量移動(dòng)
# 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:更新原壓縮包中的文件

這五個(gè)是獨(dú)立的命令,壓縮解壓都要用到其中一個(gè),可以和別的命令連用但只能用其中一個(gè)。下面的參數(shù)是根據(jù)需要在壓縮或解壓檔案時(shí)可選的。
-z:有g(shù)zip屬性的
-j:有bz2屬性的
-Z:有compress屬性的
-v:顯示所有過(guò)程
-O:將文件解開到標(biāo)準(zhǔn)輸出

下面的參數(shù)-f是必須的
-f: 使用檔案名字,切記,這個(gè)參數(shù)是最后一個(gè)參數(shù),后面只能接檔案名。

# tar -cf all.tar *.jpg這條命令是將所有.jpg的文件打成一個(gè)名為all.tar的包。-c是表示產(chǎn)生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif這條命令是將所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif這條命令是更新原來(lái)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命令批量解壓某個(gè)文件夾下所有的tar.gz文件
ls *.tar.gz | xargs -n1 tar xzvf

第三:
find -maxdepth 1 -name "*.bz2"|xargs -i tar xvjf {}

這條命令可解壓當(dāng)前目錄下的所有bz2文件
批量解壓是比較郁悶的事,以前嘗試各種方法,甚至用腳本循環(huán)語(yǔ)句解壓都不行
現(xiàn)在發(fā)現(xiàn)這條命令可以搞定,maxdepth表示搜索深度,1代表只搜索當(dāng)前目錄 第四:
for i in $(ls *.tar);do tar xvf $i;done

問(wèn)題: 我想進(jìn)行批量解壓tar文件,使用tar -xvf .tar會(huì)出錯(cuò),提示“Not found in archive”。解決方法有很多,比如寫一個(gè)腳本之類的。 請(qǐng)問(wèn)為什么tar不支持這種通配符語(yǔ)法呢?是否有特殊的原因? 我試過(guò)gzip就支gzip -d.tar.gz。 回答: 通配符是shell解決的問(wèn)題 如 tar -xvf .tar 實(shí)際上執(zhí)行tar時(shí),tar接收到的是 tar -xvf a.tar b.tar c.tar … 如果當(dāng)前目錄跟本沒(méi)有tar的東西,那么tar就收到’.tar’這個(gè)參數(shù) 與win不同,linux所有字符都可以作文件名,也即目錄中不存在著 *.tar這個(gè)文件 為了防止 *.tar被shell解釋為a.tar b.tar c.tar… 可以給它加個(gè)單引號(hào)
用tar解開一個(gè)Archive時(shí),語(yǔ)法是 tar -xvf <tarfile.tar> <tarfile.tar> 是選項(xiàng)f所要求的,只能是一個(gè)文件,比如myfiles.tar。 是myfiles.tar所包含的歸了檔的文件中的一個(gè)或者多個(gè)成員文件。如果是多個(gè),可以用通配符。 先別跟我急,我知道,這些你是清楚的。但是,你的問(wèn)題是,用了 tar -xvf *.tar 如樓上所說(shuō),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壓縮,生成一個(gè)gzip壓縮過(guò)的包,命名為jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //將目錄里所有jpg文件打包成jpg.tar后,并且將其用bzip2壓縮,生成一個(gè)bzip2壓縮過(guò)的包,命名為jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg //將目錄里所有jpg文件打包成jpg.tar后,并且將其用compress壓縮,生成一個(gè)umcompress壓縮過(guò)的包,命名為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編輯器編輯長(zhǎng)文件時(shí),常常是頭昏眼花,也找不到需要更改的內(nèi)容。
這時(shí),使用查找功能尤為重要。
方法如下:
1、命令模式下輸入“/字符串”,例如“/Section 3”。
2、如果查找下一個(gè),按“n”即可。
要自當(dāng)前光標(biāo)位置向上搜索,請(qǐng)使用以下命令:
/pattern Enter
其中,pattern表示要搜索的特定字符序列。
要自當(dāng)前光標(biāo)位置向下搜索,請(qǐng)使用以下命令:
?pattern Enter
按下 Enter鍵后,vi 將搜索指定的pattern,并將光標(biāo)定位在 pattern的第一個(gè)字符處。例如,要向上搜索 place一詞,請(qǐng)鍵入:
vi 查找替換大全
vi/vim 中可以使用 :s 命令來(lái)替換字符串。以前只會(huì)使用一種格式來(lái)全文替換,今天發(fā)現(xiàn)該命令有很多種寫法(vi 真是強(qiáng)大啊,還有很多需要學(xué)習(xí)),記錄幾種在此,方便以后查詢。
:s/vivian/sky/ 替換當(dāng)前行第一個(gè) vivian 為 sky
:s/vivian/sky/g 替換當(dāng)前行所有 vivian 為 sky
:n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個(gè) vivian 為 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky
n 為數(shù)字,若 n 為 .,表示從當(dāng)前行開始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個(gè) vivian 為 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
可以使用 # 作為分隔符,此時(shí)中間出現(xiàn)的 / 不會(huì)作為分隔符
:s#vivian/#sky/# 替換當(dāng)前行第一個(gè) vivian/ 為 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來(lái) 替換 / ): /oradata/apras/替換成/user01/apras1/
1.:s/vivian/sky/ 替換當(dāng)前行第一個(gè) vivian 為 sky
:s/vivian/sky/g 替換當(dāng)前行所有 vivian 為 sky

  1. :n,$s/vivian/sky/ 替換第 n 行開始到最后一行中每一行的第一個(gè) vivian 為 sky
    :n,$s/vivian/sky/g 替換第 n 行開始到最后一行中每一行所有 vivian 為 sky
    (n 為數(shù)字,若 n 為 .,表示從當(dāng)前行開始到最后一行)
  2. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替換每一行的第一個(gè) vivian 為 sky
    :%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky
  3. 可以使用 # 作為分隔符,此時(shí)中間出現(xiàn)的 / 不會(huì)作為分隔符
    :s#vivian/#sky/# 替換當(dāng)前行第一個(gè) vivian/ 為 sky/
  4. 刪除文本中的^M
    問(wèn)題描述:對(duì)于換行,window下用回車換行(0A0D)來(lái)表示,Linux下是回車(0A)來(lái)表示。這樣,將window上的文件拷到Unix上用時(shí),總會(huì)有個(gè)^M.請(qǐng)寫個(gè)用在unix下的過(guò)濾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
    如果上述方法無(wú)用,則正確的解決辦法是:
    · tr -d "r" < src >dest
    · tr -d "15" dest
    · strings A>B
  5. 其它
    利用 :s 命令可以實(shí)現(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 放在命令末尾,表示對(duì)搜索字符串的每次出現(xiàn)進(jìn)行替換;不加 g,表示只對(duì)搜索
    字符串的首次出現(xiàn)進(jìn)行替換;g 放在命令開頭,表示對(duì)正文中所有包含搜索字符串的行進(jìn)行替換操作。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容