私は「パイプを使用せず、GREP、FIND、CUT、 PASTEまたはLS
私はこのコマンドに達しました:
ls *.xls /users/home/DESKTOP/*SCHEDULE
これにより、デスクトップ上の.xlsファイルのみが表示され、名前にSCHEDULEが含まれるすべてのディレクトリが開きますが、そうすると、.xlsファイルのみが含まれるディレクトリ上のすべてのファイルが表示されます。
「ファイル」とは、ディレクトリ、シンボリックリンク、ソケット、名前付きパイプなどではなく、「通常のファイル」を意味すると仮定します。
ファイル名のサフィックスが.xls
で、現在のディレクトリ内のディレクトリ内またはその下に存在し、名前に文字列SCHEDULE
が含まれているすべての通常ファイルを検索するには、次のようにします。
find . -type f -path '*SCHEDULE*/*' -name '*.xls'
-type f
を使用して、find
が現在処理しているもののファイルタイプをテストします。通常のファイル(f
タイプ)の場合、次のテストが考慮されます(そうでない場合、ファイル以外の場合は、次のテストが検査されます)。
-path
テストは、find
が現在調査しているファイルへの完全なパス名をもう一度テストするものです。このパス名が*SCHEDULE*/*
と一致する場合、次のテストが考慮されます。パターンの後半の/
が原因で、パターンはディレクトリ名のSCHEDULE
にのみ一致します(最終的なファイル名ではありません)。
最後のテストはファイル名自体に対するテストであり、ファイル名が.xls
で終わっていれば成功します。
すべてのテストに合格したパス名は、デフォルトで出力されます。
コマンドを次のように短縮することもできます
find . -type f -path '*SCHEDULE*/*.xls'