• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • shell問答16:批量修改文件名后綴

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    可以復習一下xargs的用法,和變量的一些高級操作技巧 如何 批量把若干文件從一個擴展名改為另一個擴展名?比如把后綴gz,改為zip 答: 1. for file in *.gz; do mv file `basename file .gz`.zip; done 或(也適合ksh) for file in *.gz; do mv file .zip;

    可以復習一下xargs的用法,和變量的一些高級操作技巧

     如何批量把若干文件從一個擴展名改為另一個擴展名?比如把后綴gz,改為zip

    答:
    1.
    for file in *.gz; do mv $file `basename $file .gz`.zip; done
    或(也適合ksh)
    for file in *.gz; do mv $file $.zip; done

    2.ls | grep gz | awk -F'.' '{print }'|xargs -i mv {}.gz {}.zip


    附netman十三問片斷:

    $MILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:拿掉第一條 / 及其左邊的字符串:dir1/dir2/dir3/my.file.txt

    $:拿掉最后一條 / 及其左邊的字符串:my.file.txt

    $:拿掉第一個 . 及其左邊的字符串:file.txt

    $:拿掉最后一個 . 及其左邊的字符串:txt

    $:拿掉最后條 / 及其右邊的字符串:/dir1/dir2/dir3

    $:拿掉第一條 / 及其右邊的字符串:(空值)

    $:拿掉最后一個 . 及其右邊的字符串:/dir1/dir2/dir3/my.file

    $:拿掉第一個 . 及其右邊的字符串:/dir1/dir2/dir3/my

    記憶的方法為:

    # 是去掉左邊(在鑒盤上 # $ 之左邊)

    % 是去掉右邊(在鑒盤上 % $ 之右邊)

    單一符號是最小匹配﹔兩個符號是最大匹配。

    $:提取最左邊的 5 個字節:/dir1

    $:提取第 5 個字節右邊的連續 5 個字節:/dir2

    我們也可以對變量值里的字符串作替換:

    $:將第一個 dir 提換為 path/path1/dir2/dir3/my.file.txt

    $:將全部 dir 提換為 path/path1/path2/path3/my.file.txt

    利用 ${ } 還可針對不同的變量狀態賦值(沒設定、空值、非空值)

    $ :假如 $file 沒有設定,則使用 my.file.txt 作默認值。(保留空值及非空值)

    $ :假如 $file 沒有設定或為空值,則使用 my.file.txt 作默認值。 (保留非空值)

    $ :不管 $file 為何值,均使用 my.file.txt 作默認值。 (不保留任何值)

    $ :若 $file 為非空值,則使用 my.file.txt 作傳回值。 (保留沒設定及空值)

    $ :若 $file 沒設定,則使用 my.file.txt 作默認值,同時將 $file 定義為非空值。 (保留空值及非空值)

    $ :若 $file 沒設定或為空值,則使用 my.file.txt 作默認值,同時將 $file 定義為非空值。 (保留非空值)

    $ :若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。 (保留空值及非空值))

    $ :若 $file 沒設定或為空值,則將 my.file.txt 輸出至 STDERR。 (保留非空值)

    還有哦,$ 可計算出變量值的長度:

    $ 可得到 27 ,因為 /dir1/dir2/dir3/my.file.txt 剛好是 27 個字節...

    接下來,再為大家介稍一下 bash 的組數(array)處理方法。

    一般而言,A="a b c def" 這樣的變量只是將 $A 替換為一個單一的字符串,

    但是改為 A=(a b c def) ,則是將 $A 定義為組數...

    bash 的組數替換方法可參考如下方法:

    $ $ 可得到 a b c def (全部組數)

    $ 可得到 a (第一個組數),$ 則為第二個組數...

    $ $ 可得到 4 (全部組數數量)

    $ 可得到 1 (即第一個組數(a)的長度),$ 可得到 3 (第四個組數(def)的長度)

    A[3]=xyz 則是將第四個組數重新定義為 xyz ...

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>