2016-12-27 8 views
2

約4000 * .txtと* .txt.bakファイルのフォルダがあります。正規表現を使用して正確な拡張子を持つファイルを検索します。

linux find-commandを実行して、すべての* .txtファイルを検索しますが、* .txt.bakファイルは検索しません。そうする正しい正規表現は何でしょうか?

find . -regex ".*txt" 

これは、あなたが検索で正規表現を必要としない非常に簡単で、すべての

+1

これは本当ですか?私はちょうど 'findを試しました。 -regex "。* txt" '私の' .txt.bak'ファイルが見つかりません – Dekel

+2

なぜ '-regex'を使うのですか? 'find。 -name '* .txt''は '.txt.bak'を検出せず、完全にPOSIXに準拠しています。 –

+0

あなたは正しいです、私は事を考えすぎていました。 -name '* .txt'は意図したとおりに動作しています。 – octavio

答えて

2

でどのファイルを見つけませんBAKファイル

find . -regex ".*txt$/" 

を含め、すべてのファイルを検索します。 単に使用find $pwd -name "*.txt"これはあなたの要件に自動的に合致します。 ファイル名と拡張子のみを抽出するための詳細を簡素化して提供するために、このようなものを使用することができます。

for i in $(find $pwd -name "*.txt") 
do 
    flnm=$(basename $i) 
    extnm="${flnm##*.}" 
    flnmnoext="${flnm%.*}" 
    echo "FileName is : " $flnm " Extension is : " $extnm " File Name without extension is $flnmnoext" 
done 

これは複数のスレッドで説明されています。それが役に立てば幸い。

関連する問題