Linux的shell 中 %% *的含義
testfile=/dir1/dir2/dir3/test.file.txt
可以用${ }分別替換得到不同的值:
${testfile
${testfile
${testfile
${testfile
${testfile%/*}:刪掉最後一個 / 及其右邊的字符串:/dir1/dir2/dir3
${testfile%%/*}:刪掉第一個 / 及其右邊的字符串:(空值)
${testfile%.*}:刪掉最後一個 . 及其右邊的字符串:/dir1/dir2/dir3/test.file
${testfile%%.*}:刪掉第一個 . 及其右邊的字符串:/dir1/dir2/dir3/test
記憶方法爲:
%是去掉右邊(鍵盤上% 在$ 的右邊)
單一符號是最小匹配;兩個符號是最大匹配
${testfile:0:5}:提取最左邊的 5 個字節:/dir1
${testfile:5:5}:提取第 5 個字節右邊的連續5個字節:/dir2
也可以對變量值裏的字符串作替換:
${testfile/dir/path}:將第一個dir 替換爲path:/path1/dir2/dir3/test.file.txt
${testfile//dir/path}:將全部dir 替換爲 path:/path1/path2/path3/test.file.txt
將一目錄下所有的文件的擴展名改爲bak
#! /bin/bash
for i in *.*; do
mv $i ${i%%.*}.bak
done