特定の文字(拡張子の有無にかかわらず)で終わるファイル名を探す

特定の文字(拡張子の有無にかかわらず)で終わるファイル名を探す

フォルダに複数のファイルがあり、すべて1、2、3などの異なるバージョン番号で終わります。それらのいくつかは拡張機能を持ち、一部はそうではありません。 ls、find、grepなどのコマンドを使用して拡張子で終わったり終わらない可能性がある特定の文字(「1」など)で終わるすべてのファイルを一覧表示する方法はありますか?

たとえば、あるディレクトリに次のようなファイルがありますver1.txt。似たようなものを使ってみましたが、欲しい効果はありません...ver1file.1ver1.txtver1file.1ls *[1.]*

ベストアンサー1

存在できるすべてのファイル名と検索できるすべてのパターンの例を提供することはできませんので、次の情報を使用します。

find . -type f | awk -F / '{print $2}' | grep -v '\.[1-100]$'

ver1.txtver1およびfile.1を検索するディレクトリのファイルとして指定したことを考慮すると、上記のコマンドは目的の出力を返します。

ver1.txt
ver1

各部分を説明してください。

find . -type f現在のディレクトリのすべてのファイルを返します。

awk -F / '{print $2}'./コマンドに表示される各ファイルの先頭を削除します。find

grep -v '\.[1-100]$'.#whereで#数字で終わらないすべてのファイルを返します1-100。スイッチはv一致しない行を探します。提供された例では、エスケープを使用し、文字列の周りに一重引用符を使用する必要が.#あります。この文字列で終わるファイルを表しますが、あなたの場合、この文字列なしで動作します。ファイル名の他の場所にファイルがある場合にのみ含めます。\.$.

探している項目に応じてパラメータを変更する必要がありますが、これは開始されます。

おすすめ記事