![]() |
![]() |
![]() |
![]() |
![]() |
$ ls /dev/ram?? ←列出〝/dev/ram〞後續接任意二個字元的檔案 /dev/ram10 /dev/ram11 /dev/ram12 /dev/ram13 /dev/ram14 /dev/ram15 $ cd /bin ←進入目錄 /bin (/bin 目錄存放的為 Linux 執行檔) $ ls l? ←列出第一字為〝l〞(小寫 L),第二字為任一單一字元的檔案 ln ls $ ls ?o?? ←列出第一,三,四字為任一字元,第二字為〝o〞的檔案 more sort $ ls ??? ←列出長度=3 的檔案 awk cat cut env pwd red rpm rvi sed tar $ ls ?ed ←列出第一字為任一字元,後面為〝ed〞的檔案 red sed |
$ mv l? /tmp $ cp ch?.html /backup $ rm ???.txt |
$ ls /dev/ram* ←列出〝/dev/ram〞後面接任一長度的字串 /dev/ram /dev/ram10 /dev/ram13 /dev/ram2 /dev/ram5 /dev/ram8 /dev/ram0 /dev/ram11 /dev/ram14 /dev/ram3 /dev/ram6 /dev/ram9 /dev/ram1 /dev/ram12 /dev/ram15 /dev/ram4 /dev/ram7 /dev/ramdisk $ cd /etc ←進入目錄 /etc (/etc 目錄存放的為 Linux 設定檔) $ ls -d c*/ ←列出以〝c〞開頭,後面為任何名稱的目錄 cron.d/ cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/ cups/ $ ls *.cfg ←列出以副檔名為〝cfg〞所有的檔案(〝.〞後面的檔名叫副檔名) a2ps.cfg a2ps-site.cfg enscript.cfg $ ls -d *-* ←列出檔名中有〝-〞的所有的檔案(檔名最前或最後一個字元為〝-〞也會成立) a2ps-site.cfg gnome-vfs-mime-magic jvm-commmon shadow- bonobo-activation gpm-root.conf lsb-release.d system-release dbus-1 group- passwd- fedora-release gshadow- redhat-lsb gnome-vfs-2.0 gtk-2.0 redhat-release $ ls s*s ←列出〝s〞開頭和結尾的所有檔案 services shells sudoers |
萬用字元 | 匹配的檔案 | 例 |
* | 任何檔案.除〝.〞開頭的隱藏檔 | ls * |
*.* | 任何有〝.〞的檔名,如 〝readme.txt〞,〝abc.〞等但不包含〝.〞開頭的檔案如〝.Trash〞 | cp *.* /tmp |
.* | 任何隱藏檔 | rm .* |
.*/ | 任何隱藏目錄 (檔名最後有〝/〞即目錄,用ls -p 或 ls -F 就會現形) | ls .*/ |
*/ | 任何目錄,但不包含以〝.〞開頭的隱藏目錄 | mv */ /tmp |
$ ls -d .*/ ←只列出隱藏的目錄 $ ls -d .* ←只列出隱藏檔 $ rm *. ←只刪除隱藏檔 $ rm -rf * ←刪除工作目錄內所有檔案和目錄,但不包含隱藏檔 $ rm -r */ ←刪除工作目錄內所目錄,但不包含檔案和隱藏目錄 |
$ echo iphone{3g,5,5c}, ←擴展列出〝3g〞,〝5〞,和〝5c〞 iphone3g, iphone5, iphone5c, $ echo iphone {3g,5,5c} , ←〝{ }〞前後字元有無空格輸出有差,有空格時前後的字元不會擴展 iphone 3g 5 5c , $ ls -d {.*,.*/} ←只列出隱藏檔和隱藏的目錄 $ rm -fr {.*/,.*,*} ←刪除工作目錄內所有檔案,包含隱藏檔和隱藏的目錄(危險動作) $ cp -v /bin/{*ee*,*dd*} /tmp ←複製符合萬用字元的樣板〝*ee*〞和〝*dd*〞的檔案 `/bin/sleep' -> `/tmp/sleep' `/bin/usleep' -> `/tmp/usleep' `/bin/dd' -> `/tmp/dd' |
$ ls /dev/tty[14] ←列出〝/dev〞目錄內 tty1 或 tty4 的檔案(〝/dev〞目錄為 Linux 裝置檔) /dev/tty1 /dev/tty4 $ ls /dev/tty[123][45] /dev/tty14 /dev/tty15 /dev/tty24 /dev/tty25 /dev/tty34 /dev/tty35 $ ls /dev/l[op]? /dev/log /dev/lp0 /dev/lp1 /dev/lp2 /dev/lp3 |
$ LANG=en_US.UTF-8 ←設定語系的編碼為〝en_US.UTF-8〞(不同編碼結果可能會有出入) $ ls /usr/bin/t[b-Y]e ←列出〝t〞和〝e〞,中間為〝b 到 Y〞間的檔案 /usr/bin/tee /usr/bin/tie /usr/bin/toe $ ls /usr/bin/t[Y-b]e ←無效的表示法,因匹配篩選範圍一定要由小到大 ls: cannot access t[Y-b]e: No such file or directory $ ls /usr/bin/icc[7-9i-t1-2]* ←第四個字元,範圍從〝7~9〞或〝i~t〞或〝1~2〞只要其一成立就成立 /usr/bin/icc2ps /usr/bin/icclink /usr/bin/icctrans |
$ ls /dev/tty[!14] dev/tty0 /devtty3 /devtty6 /devtty8 dev/tty2 /devtty5 /devtty7 /devtty9 $ ls /usr/bin/t[!o-p]e /usr/bin/tee /usr/bin/tie $ ls /usr/bin/icc[^2]* /usr/bin/icclink /usr/bin/icctrans |
POSIX Character 匹配字元 | ||
POSIX | ASCII | 說明 |
[:alnum:] | [A-Z,a-z,0-9] | 英文字母和數字 |
[:alpha:] | [A-Z,a-z] | 英文字母 |
[:blank:] | 空格(ASCII = 20H)和 TAB(ASCII = 9H) | |
[:cntrl:] | [0H-1FH,7FH] | 控制字元 |
[:digit:] | [0-9] | 數字 |
[:graph:] | [21H-7EH] | 會顯示的字元 |
[:upper:] | [A-Z] | 大寫字母 |
[:lower:] | [a-z] | 小寫字母 |
[:print:] | [20H-7EH] | 會顯示的字元+空格 |
[:punct:] | [\]\[!"#$%&'()*+,./:;<=>?@\^_`{|}~-] | 標點和符號 |
[:space:] | [ \t\r\n\v\f] | Whitespace(不顯示的字元) |
[:xdigit:] | [A-Fa-f0-9] | 十六進制的字元 |
$ ls -d /etc/[[:upper:]]* ←列出第一個字元為大寫的檔案 /etc/ConsoleKit /etc/DIR_COLORS.xterm /etc/Muttrc.local /etc/PolicyKit /etc/DIR_COLORS /etc/Muttrc /etc/NetworkManager /etc/X11 |
$ echo > abc ←製造一長度為三個字元的檔案 $ ls ??? ←驗證一下 abc $ echo > -12 ←製造一檔案〝-12〞(長度也為三個字元) $ ls ??? ←再驗證一下 ls: invalid option -- 2 ←??? 失效了 Try `ls --help' for more information. $ ls * ←列出所有檔案 ls: invalid option -- 2 ←靈異事件 ? 萬用字元全失效 $ rm -f ./-12 ←把這靈異檔案殺掉吧 $ ls ??? ←再驗證一下 abc ←正常了 :-) |
$ rename IMAGE keelung IMAGE* ←把檔案 IMAGE0001.jpg ~ IMAGE0050.jpg 全改檔名為 keelung0001.jpg ~ keelung0050.jpg |
$ rename IMAGE00 keelung00 IMAGE00[0-2]?.* ←把檔案 IMAGE0001.jpg ~IMAGE0029.jpg 全改檔名為 keelung0001.jpg~keelung0029.jpg,其餘不改 |
$ rename .config .cfg *.config ←把所有工作目錄中,副檔名為〝.config〞改為〝.cfg〞 $ rename - _ *-* ←把所有檔案中檔名中的減號〝-〞改為底線〝_〞 |
$ rename ~/catlog ~/list ~/catlog?? ←把家目錄內的目錄 catlog00~catlog99 全改目錄名為 list00~list99 |
$ rename abc wxyz * ←把〝abc〞更名為〝wxyz〞 |
$ LANG= ←清除所有設定的語系(同等〝LANG=C〞或〝LANG=POSIX〞為清除所有設定的語系) $ LANG=en_US.UTF-8 ←設定語系為〝en_US.UTF-8〞 |