web-dev-qa-db-ja.com

lsとワイルドカードを使用してファイルを検索する

pwd : ../bin binの下にdatafilesというディレクトリがあります。

メタ文字とls -lLコマンド(小文字のLと大文字のL)を使用して、datafilesディレクトリの下にドット「.」と文字「f」または「u」を含むすべてのファイル名を一覧表示します'ドットの後の任意の場所。

試しました:ls -lL datafiles *.*f*u

ls -lL datafiles .[f*u]

答えてくれてありがとう。残念ながら、どのソリューションも希望どおりに機能しませんでした。

質問を明確にすると、/bin/datafiles/file.backupがディレクトリのルートになります。 /binディレクトリから使用したコマンドは、ls -lL datafilesの後にメタ文字が続きます。

私は、ドットの後にfまたはuが続き、直接fまたはuが続いていないfile.backupを探しています(任意の場所ドットの後)、fまたはuで終了しない。

2

これは、ドットの後にfまたはuが付いているが、fまたはuで終わっていないデータディレクトリ内のファイルを検索します。

ls -lL datafiles/*.*[fu]*[^fu]

この質問のバージョン1への回答

「f or u」と書いた。これをグロブに書き込むには、[fu]を使用します。 fまたはuの前にドットを付けることも要求するには、次を試してください。

ls -lL .*[fu]* *.*[fu]*

上記の最初のグロブ.*[fu]*は、ドットで始まるファイルに展開されます(つまり、通常は「非表示」になっています)。 2番目の*.*[fu]*は、名前のどこかにドットがあるがしないで始まるファイルに展開されます。

隠しファイルは通常、さまざまなプログラムの構成ファイルとして機能します。それらを表示したくないが、通常は表示したくない場合は、最初のグロブを省略して単純に使用します。

ls -lL *.*[fu]*

グロブの詳細

  • *.*f*uは、fが後に続く(必ずしも直後ではない)ドットを含み、uで終わるファイル名に展開されます。つまり、このグロブでは、fuの両方がファイル名に存在し、fの次にuの順序で出現する必要があります。

    通常、*は0個以上の任意の文字を意味します。特殊なケースとして、上記のファイルはドットで始まるファイルと一致しません。そのようなファイルは、慣例により「非表示」になっているためです。

  • .[f*u]は、ドットの直後に文字f*、またはu(以降は何もない)のいずれかが続くファイル名に展開されます。星は角かっこ内にあるため、通常の0個以上の文字の意味を失い、リテラル*になります。

7
John1024