[英]Search for matching filename pattern with a bash script
首先,如果這是一個noob問題,我道歉 - 我對bash腳本很新。
我有一個包含許多類型的文件和文件夾的目錄。 我需要對匹配特定模式的所有文件執行一組操作。 這是模式: prefix_suffix.ext
。 _suffix.ext
與所有目標文件完全相同,只有prefix
部分是可變的。
是否有可能(如果是這樣,如何?)在bash中循環遍歷與模式匹配的所有文件名,並且有一個用於filename
變量和一個用於循環內的prefix
。 我想避免像sed
這樣的外部工具。
任何幫助將不勝感激! 謝謝!
for filename in *_suffix.ext; do
prefix="${filename%_suffix.ext}"
#do your thing here
done
這使用POSIX后綴剝離功能(請參閱man dash
和type /suffix<enter>
來搜索suffix
):
$ {parameter%word}刪除最小的后綴模式。 這個詞被擴展為產生一種模式。 然后參數擴展產生參數,后綴的最小部分與刪除的模式匹配。
(%%會刪除最長的匹配后綴,但由於我們在這里使用的是文字后綴而不是glob模式,因此在這種情況下兩者是相同的)。
可運行的例子:
for filename in pre1_suffix.ext pre2_suffix.ext; do
prefix="${filename%_suffix.ext}"
echo "$prefix"
done
將打印
pre1
pre2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.