Linux
使用 ls 查找以字元結尾的文件,忽略副檔名
我應該使用 ls 來查找以某個字母結尾的文件,但文件是否具有副檔名並不重要。
例如,我希望它這樣做
> ls test test.txt test.ascii other.txt
> ls [something] test test.txt test.ascii
這樣我就可以找到以“t”結尾的文件,但它不包括副檔名以 t 結尾的文件
編輯:我應該假設文件名中唯一的句點字元將用於副檔名,並且不會有其他字元
某事=
|grep -e ".*t\.[^.]*" -e "^[^.]*t$"
如果您使用的是
bash
shell,則可以使用該extglob
選項進行複雜的過濾。例如:解決方案:
bash$ shopt -s extglob bash$ ls other.txt test test.ascii test.txt bash$ ls *@(t.*|[^.]?[[:alnum:]]t) test test.ascii test.txt
解釋:
PATTERN1
(t.*)
匹配任何以“t”結尾且後跟文件副檔名的文件:bash$ ls *@(t.*) test.ascii test.txt
PATTERN2
([^.]?[[:alnum:]]t)
匹配任何沒有點、後跟零個或多個字母數字字元並以“t”結尾的文件。這匹配沒有文件副檔名的文件:bash$ ls *@([^.]?[[:alnum:]]t) test
glob 只
@(PATTERN1|PATTERN2)
匹配任一模式一次。組合模式僅過濾掉我們正在尋找的內容。有關 bash 模式的更多資訊,請參閱:http ://wiki.bash-hackers.org/syntax/pattern