簡體   English   中英

使用bash腳本搜索匹配的文件名模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM